{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Tutorial2: PyTorch basics"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Outline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Datasets\n",
    "- Models\n",
    "- Losses\n",
    "- Optimizers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Official resources:\n",
    "* [Deep Learning with PyTorch: a 60 Minute Blitz](https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html)\n",
    "* [PyTorch documentation](https://pytorch.org/docs/stable/index.html)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here no details, mostly visualization, with linear regression."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib import colors\n",
    "plt.rcParams.update({'font.size': 16})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = torch.rand(20, 5)\n",
    "x\n",
    "((x.norm(dim=1) - 1).abs() < 1e-10).float()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Datasets"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### A raw dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The data are obtained from the model \n",
    "$$\n",
    "x \\mapsto y:=Ax + b\n",
    "$$\n",
    "with $x\\in\\mathbb R^{input\\_dim}$ and $y\\in\\mathbb R^{output\\_dim}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "input_dim = 1\n",
    "output_dim = 1\n",
    "\n",
    "A = 2 * np.random.rand(output_dim, input_dim) - 1\n",
    "b = 2 * np.random.rand(output_dim) - 1\n",
    "\n",
    "true_model = lambda x: A @ x + b"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We get a training set by randomly sampling and noisy observations\n",
    "\\begin{align*}\n",
    "&x_i \\sim U([-1, 1])\\\\\n",
    "&y_i = A x_i + b + \\nu_i\n",
    "\\end{align*}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_train = 1000\n",
    "noise_level = 0.04\n",
    "\n",
    "# Generate a random set of n_train samples\n",
    "X_train = np.random.rand(n_train, input_dim)\n",
    "y_train = np.array([true_model(x) for x in X_train])\n",
    "\n",
    "# Add some noise\n",
    "y_train += noise_level * np.random.standard_normal(size=y_train.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "    fig = plt.figure()\n",
    "    fig.clf()\n",
    "    ax = fig.gca()\n",
    "    ax.plot(X_train, y_train, '.')\n",
    "    ax.grid(True)\n",
    "    ax.set_xlabel('X_train')\n",
    "    ax.set_ylabel('y_train')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PyTorch `Dataset`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from utils import VectorialDataset\n",
    "training_set = VectorialDataset(input_data=X_train, output_data=y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1000"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(training_set)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(tensor([[0.1640],\n",
       "         [0.5392]]),\n",
       " tensor([[-0.1829],\n",
       "         [-0.5020]]))"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "training_set[10:12]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here almost useless, but think about e.g. images."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PyTorch `DataLoader`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 120\n",
    "train_loader = torch.utils.data.DataLoader(training_set, \n",
    "                                           batch_size=batch_size, \n",
    "                                           shuffle=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The role of `batch_size`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Batch n.  1: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  2: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  3: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  4: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  5: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  6: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  7: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  8: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  9: input size=torch.Size([40, 1]), output size=torch.Size([40, 1])\n"
     ]
    }
   ],
   "source": [
    "for idx, batch in enumerate(train_loader):\n",
    "    print('Batch n. %2d: input size=%s, output size=%s' % (idx+1, batch[0].shape, batch[1].shape))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "960"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "8 * 120"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The role of `shuffle`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[6.69411405e-01, 4.00480479e-01, 8.10426295e-01],\n",
       "       [3.29530030e-01, 5.56968451e-01, 3.80387425e-01],\n",
       "       [2.47591423e-01, 1.40802249e-01, 2.44041115e-01],\n",
       "       [4.91205295e-01, 3.91590953e-01, 1.88954145e-01],\n",
       "       [1.31852058e-01, 5.42105436e-01, 1.29436210e-01],\n",
       "       [4.60988370e-01, 6.16206944e-01, 1.00356318e-01],\n",
       "       [8.77714098e-01, 9.00639415e-01, 7.22304881e-01],\n",
       "       [3.03420647e-01, 5.75939655e-01, 1.49090797e-01],\n",
       "       [2.23383596e-01, 9.37779322e-02, 5.94454587e-01],\n",
       "       [6.37698525e-01, 3.66175711e-01, 3.01530719e-01],\n",
       "       [1.64030707e-01, 7.39635110e-01, 4.36680228e-01],\n",
       "       [5.39156667e-01, 6.88024998e-01, 2.63070375e-01],\n",
       "       [5.59023699e-02, 4.36680228e-01, 8.87980819e-01],\n",
       "       [4.25717525e-01, 5.06055951e-01, 2.51389802e-01],\n",
       "       [5.79729847e-01, 9.14307714e-01, 6.81149125e-01],\n",
       "       [3.82888752e-02, 1.80760071e-01, 6.94241762e-01],\n",
       "       [9.94862227e-01, 4.01813775e-01, 2.42134944e-01],\n",
       "       [9.60487005e-01, 3.99649829e-01, 4.07040924e-01],\n",
       "       [1.29436206e-01, 3.14749897e-01, 9.53912854e-01],\n",
       "       [2.27343697e-01, 3.31039429e-01, 3.99167269e-01],\n",
       "       [2.27077229e-02, 2.70676434e-01, 3.10902208e-01],\n",
       "       [8.97273862e-01, 3.97690982e-01, 2.45151341e-01],\n",
       "       [2.00478073e-01, 5.05474031e-01, 3.47708672e-01],\n",
       "       [4.05685071e-01, 9.16803896e-01, 9.28728059e-02],\n",
       "       [1.62035528e-01, 9.94862199e-01, 4.05685067e-01],\n",
       "       [6.79117856e-01, 7.85600364e-01, 9.11106527e-01],\n",
       "       [4.38407288e-01, 6.47453070e-01, 2.16975823e-01],\n",
       "       [7.93122108e-01, 8.22849691e-01, 4.58610296e-01],\n",
       "       [8.63918264e-01, 7.27855802e-01, 4.45396334e-01],\n",
       "       [7.09286039e-02, 4.33844060e-01, 5.77014327e-01],\n",
       "       [4.23782386e-01, 6.75117433e-01, 8.24913383e-01],\n",
       "       [9.28728089e-02, 6.37553155e-01, 2.00478077e-01],\n",
       "       [4.13238338e-01, 9.46680069e-01, 7.09286034e-02],\n",
       "       [8.61597010e-01, 3.36428404e-01, 2.23296165e-01],\n",
       "       [6.87868981e-01, 6.81149125e-01, 5.43051213e-02],\n",
       "       [3.39271996e-02, 3.25083248e-02, 7.89009154e-01],\n",
       "       [2.71302114e-01, 9.66515481e-01, 9.55501914e-01],\n",
       "       [1.95213717e-01, 8.11477482e-01, 3.07473451e-01],\n",
       "       [9.31077840e-01, 4.66096908e-01, 4.93235558e-01],\n",
       "       [9.71378956e-01, 2.14888677e-01, 1.96266502e-01],\n",
       "       [9.11547186e-01, 8.57882082e-01, 1.19324312e-01],\n",
       "       [9.00425208e-02, 9.55501914e-01, 3.14442009e-01],\n",
       "       [9.56638139e-01, 6.80718541e-01, 1.58087075e-01],\n",
       "       [3.61377944e-01, 6.72934830e-01, 1.52153984e-01],\n",
       "       [5.17152864e-01, 6.71165660e-02, 3.20345342e-01],\n",
       "       [1.70793254e-01, 3.99252087e-01, 1.94158480e-01],\n",
       "       [8.87980791e-01, 6.10551536e-01, 9.65922654e-01],\n",
       "       [4.55602455e-01, 6.01820946e-01, 5.52841902e-01],\n",
       "       [7.53121514e-01, 9.11106527e-01, 2.42823511e-01],\n",
       "       [9.54548046e-01, 6.99273407e-01, 2.18628291e-02],\n",
       "       [5.75939631e-01, 6.95795059e-01, 4.19741988e-01],\n",
       "       [1.96266496e-01, 8.45227480e-01, 6.46153986e-01],\n",
       "       [3.83633346e-01, 1.76578909e-01, 8.51318538e-01],\n",
       "       [6.88024981e-01, 7.74007320e-01, 9.38427567e-01],\n",
       "       [3.70766633e-01, 2.08492488e-01, 9.01957810e-01],\n",
       "       [7.11467922e-02, 6.80641413e-01, 1.44394293e-01],\n",
       "       [2.42134940e-01, 1.72193021e-01, 9.07124281e-01],\n",
       "       [1.31541125e-01, 2.96776146e-01, 2.70676434e-01],\n",
       "       [4.06001853e-01, 4.62921500e-01, 9.78850573e-02],\n",
       "       [5.52646973e-01, 2.52525568e-01, 4.71259952e-02],\n",
       "       [8.70956472e-01, 9.96727884e-01, 1.60843268e-01],\n",
       "       [4.81144896e-04, 1.74341127e-01, 6.10551536e-01],\n",
       "       [6.36432936e-01, 7.28130817e-01, 3.97690982e-01],\n",
       "       [1.28252472e-01, 2.02355459e-01, 4.08189327e-01],\n",
       "       [3.67351598e-01, 5.55824161e-01, 8.25685978e-01],\n",
       "       [2.41551942e-01, 5.22732794e-01, 5.54824471e-01],\n",
       "       [3.77395928e-01, 2.27343693e-01, 7.35089064e-01],\n",
       "       [8.12809322e-01, 1.95213720e-01, 8.04300785e-01],\n",
       "       [4.85050412e-01, 7.67052114e-01, 8.15592289e-01],\n",
       "       [9.42720352e-01, 3.96209836e-01, 2.58291602e-01],\n",
       "       [3.20345347e-01, 3.70766640e-01, 4.90304440e-01],\n",
       "       [1.54878128e-01, 2.31800556e-01, 6.46267831e-01],\n",
       "       [2.42267078e-01, 5.08911371e-01, 8.69962513e-01],\n",
       "       [4.94902462e-01, 7.74517894e-01, 5.17152846e-01],\n",
       "       [4.08189325e-01, 9.65922654e-01, 7.06594229e-01],\n",
       "       [6.80718522e-01, 1.52393281e-01, 3.95752490e-01],\n",
       "       [5.87683948e-01, 1.12517271e-02, 9.52611983e-01],\n",
       "       [4.88634954e-01, 5.08489668e-01, 5.55564880e-01],\n",
       "       [9.14900368e-03, 4.36751515e-01, 4.89913583e-01],\n",
       "       [4.65971150e-01, 8.50946963e-01, 1.94319397e-01],\n",
       "       [7.85816193e-01, 3.58149260e-01, 9.11547184e-01],\n",
       "       [6.73470229e-01, 5.29480457e-01, 4.49749947e-01],\n",
       "       [3.03836482e-01, 9.54351008e-01, 7.85979986e-01],\n",
       "       [6.53602023e-01, 7.30184019e-01, 2.20310807e-01],\n",
       "       [3.82078872e-01, 2.21856296e-01, 3.31155807e-01],\n",
       "       [8.42803052e-01, 9.23417389e-01, 8.28334510e-01],\n",
       "       [6.94241747e-01, 5.63463986e-01, 9.23834145e-01],\n",
       "       [1.88954143e-01, 2.88483333e-02, 4.07018244e-01],\n",
       "       [2.07121612e-01, 2.45151341e-01, 3.61377954e-01],\n",
       "       [3.61080666e-01, 8.28219771e-01, 4.63440537e-01],\n",
       "       [3.08155691e-01, 7.87495852e-01, 3.67310345e-01],\n",
       "       [2.28857272e-01, 7.75592506e-01, 8.56404722e-01],\n",
       "       [8.50946984e-01, 2.20310807e-01, 3.75088662e-01],\n",
       "       [9.77431419e-02, 4.21602190e-01, 7.26347923e-01],\n",
       "       [7.67052107e-01, 7.75117278e-01, 3.45172882e-01],\n",
       "       [4.30924520e-01, 5.88323548e-02, 5.42870490e-03],\n",
       "       [1.49279927e-01, 8.00879717e-01, 5.56968451e-01],\n",
       "       [5.27385019e-02, 7.29867101e-01, 8.84478688e-01],\n",
       "       [6.15388450e-02, 1.89343780e-01, 3.38776141e-01],\n",
       "       [3.48503317e-01, 4.94902462e-01, 8.99744987e-01],\n",
       "       [6.35666416e-01, 1.07564494e-01, 2.88794309e-01],\n",
       "       [5.22732775e-01, 2.24237934e-01, 2.53576338e-01],\n",
       "       [5.42078182e-01, 6.44157827e-01, 1.08579613e-01],\n",
       "       [5.87701166e-01, 3.96601230e-01, 9.31077838e-01],\n",
       "       [5.90079478e-01, 9.15153801e-01, 2.33132944e-01],\n",
       "       [4.06704494e-01, 8.28334510e-01, 6.03253484e-01],\n",
       "       [4.69967511e-01, 7.64708102e-01, 5.55432677e-01],\n",
       "       [1.61783438e-02, 9.33390975e-01, 6.84393942e-01],\n",
       "       [3.96649806e-01, 5.52646995e-01, 2.70929784e-01],\n",
       "       [1.81919156e-01, 7.50522733e-01, 1.64588168e-01],\n",
       "       [4.26194412e-01, 7.61050820e-01, 6.23844445e-01],\n",
       "       [3.14749887e-01, 6.73470259e-01, 5.42322814e-01],\n",
       "       [5.49752808e-02, 9.79971647e-01, 3.20047915e-01],\n",
       "       [8.26111878e-01, 1.34388745e-01, 7.44233251e-01],\n",
       "       [3.86807979e-01, 9.05345738e-01, 8.84863287e-02],\n",
       "       [9.33771058e-01, 9.53912854e-01, 4.89908725e-01],\n",
       "       [6.79667096e-01, 5.82992494e-01, 3.51980925e-01],\n",
       "       [2.18771144e-01, 3.85570079e-01, 3.21207404e-01],\n",
       "       [8.72292270e-01, 7.70615220e-01, 8.53531539e-01],\n",
       "       [6.81149096e-01, 4.54912215e-01, 9.63727653e-01]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "first_batch = []\n",
    "\n",
    "for epoch in range(2):\n",
    "    for idx, batch in enumerate(train_loader):\n",
    "        if idx == 0:\n",
    "            first_batch.append(batch)\n",
    "        \n",
    "np.c_[X_train[:batch_size], first_batch[0][0].numpy(), first_batch[1][0].numpy()]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Models"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We implement a linear model $$x \\mapsto model(x):=A x + b$$ \n",
    "\n",
    "with $A\\in \\mathbb{R}^{input\\_dim\\times output\\_dim}$, $b\\in\\mathbb{R}^{output\\_dim}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "from utils import LinearModel\n",
    "model = LinearModel(input_dim, output_dim)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Model inspection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LinearModel(\n",
      "  (linear): Linear(in_features=1, out_features=1, bias=True)\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "print(model)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "See [pytorch.org/docs/stable/nn.html](https://pytorch.org/docs/stable/nn.html) for many other layers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Parameter containing:\n",
       " tensor([[-0.8143]], requires_grad=True),\n",
       " Parameter containing:\n",
       " tensor([-0.1842], requires_grad=True)]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(model.parameters())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Parameter containing:\n",
       "tensor([[-0.8143]], requires_grad=True)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.linear.weight"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Parameter containing:\n",
       "tensor([-0.1842], requires_grad=True)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.linear.bias"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The `forward` method"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[-0.2466],\n",
       "        [ 0.9309],\n",
       "        [-0.1456],\n",
       "        [-0.4986],\n",
       "        [-1.0125]], grad_fn=<AddmmBackward>)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = torch.randn(5, input_dim)\n",
    "model.forward(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[tensor([-0.2466], grad_fn=<AddBackward0>),\n",
       " tensor([0.9309], grad_fn=<AddBackward0>),\n",
       " tensor([-0.1456], grad_fn=<AddBackward0>),\n",
       " tensor([-0.4986], grad_fn=<AddBackward0>),\n",
       " tensor([-1.0125], grad_fn=<AddBackward0>)]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[model.linear.weight @ xx + model.linear.bias for xx in x]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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xw0XdODTdfk22dO1dWPat2jId1sP2cYfKCqx3desNVZedJgOMa6D7F4FO7+DzpdCpwG1toxbbrmF++67jz/+8Y/8+9//5t5772Xr1q2kp6fzwgsv4HK5mDBhAmPHjmXlypUA/OpXv2LOnDk88cQTXHLJJaxYsYLnnnuOnJwcZs6cCUBpaSkjRozgxIkTTJkyhcTERKZNm8a8efOC1vDYY4/x6quv8rvf/Y6XX36ZPXv28NRTT5GVlcUPP/wQtidKRkYGR48e5dJLLw15/ne/+x2fffYZd955J3v37uWRRx6xaTQV0adPH6ZMmcKDDz7IP//5T/r37w9gM50tXbqUn376iaeffprExESrvM2ePXv4/e9/T1JSEj///DMffPABl112GWvWrOG8884r977bt29nwoQJPP7447Ru3ZpXX32Vm2++mc2bN9v6+lxwwQU0a9aMr776iosuuijifVUWLVSiROauAhRluSaxTmFUnyTrfGCUlRkxZh4zBYRSRuSW6VcJ9KUIcHbbptx/aVemfltmt733kq50b9eUlTmHreixGKeQ2DS+rCSMy8vET7PwKhU2fFiHGNdBdq+Cd68HTyk44+BXn9WaYPnTn/7EXXfdBUC/fv1YsGAB06ZNY8eOHTRr1gyAvXv3MmHCBHbt2kVRURGzZs3i6aeftpzmV155JU6nk7/85S889thjnHfeebz77rvk5OSwYsUKy8RzzTXXcO6559ruv3PnTl5++WWefvppJk6caB0/55xzuOSSS1iwYAE33nhjyLVnZGQgImEf0jExMTz//PNcffXVdOzYkWeeeaZS/zfNmjWzBEjPnj1DmqoKCgrIzMykXbt2tuPTp0+33ns8Hq6++mpSU1N58803+cc//lHufQ8dOsS3337L2WefDRjCrX379pYgN3E4HJx33nlBGlC00eavKGA+iGevyrW0jECtxT/Kyul0oIC7B3cmuWVAyxiBPsktuH1AMs/eeC5xTvtMXgw/yYjUdlzZqy3nJzXn+ZvOZezAZPqmJDBr/GDGDkzmjoHJfDh+MKP6JFn3dTgErzK0I7PGmGkSM01kc9fmBYUYa2qZnd8ZAkV5jNed39XaUq655hrrfUJCAomJiQwaNMgSKAA9evQAYPfu3Xz77bcAQS2Aze+XLVsGGE7xTp062R7EDoeDW2+91XbdokWL8Hq93HHHHbae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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "    fig = plt.figure()\n",
    "    fig.clf()\n",
    "    ax = fig.gca()\n",
    "    ax.plot(training_set.input_data, training_set.output_data, '.')\n",
    "    ax.plot(training_set.input_data, model.forward(training_set.input_data).detach().numpy(), '.')\n",
    "    ax.grid(True)\n",
    "    ax.set_xlabel('X_train')\n",
    "    ax.legend(['y_train', 'model(X_train)'])    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Losses"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The MSE loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The MSE loss is\n",
    "$$\n",
    "L(y, y') = \\|y-y'\\|_2^2\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch.nn as nn\n",
    "loss_fun = nn.MSELoss(reduction='mean')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "More at [pytorch.org/docs/stable/nn.html#loss-functions](https://pytorch.org/docs/stable/nn.html#loss-functions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(2.)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = torch.tensor(np.array([1, 2, 1]).astype('f'))\n",
    "z = torch.tensor(np.array([0, 0, 0]).astype('f'))\n",
    "loss_fun(x, z)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Giving a score to the model (parameters) given the training set"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The loss for one data pair $(x_i, y_i)$ is \n",
    "$$\n",
    "L(model(x_i), y_i)\n",
    "$$\n",
    "\n",
    "The cumulative (average) loss on the training set is \n",
    "$$\n",
    "L(X_{train}, y_{train}):=\\frac{1}{n_{train}} \\sum_{i=1}^{n_{train}} L(model(x_i), y_i)\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "\n",
    "    state_dict = model.state_dict()\n",
    "\n",
    "    ww, bb = np.meshgrid(np.linspace(-2, 2, 30), np.linspace(-2, 2, 30))\n",
    "\n",
    "    loss_values = 0 * ww\n",
    "    for i in range(ww.shape[0]):\n",
    "        for j in range(ww.shape[1]):\n",
    "            state_dict['linear.weight'] = torch.tensor([[ww[i, j]]])\n",
    "            state_dict['linear.bias'] = torch.tensor([bb[i, j]])\n",
    "            model.load_state_dict(state_dict)\n",
    "            loss_values[i, j] = loss_fun(model.forward(training_set.input_data),  training_set.output_data)\n",
    "\n",
    "    fig = plt.figure(figsize=(10, 8))\n",
    "    fig.clf()\n",
    "    ax = fig.gca()\n",
    "    levels = np.logspace(np.log(np.min(loss_values)), np.log(np.max(loss_values)), 20)\n",
    "    c=ax.contourf(ww, bb, loss_values, levels=levels, norm=colors.LogNorm())\n",
    "    plt.colorbar(c)\n",
    "    ax.plot(A[0], b, 'r*', markersize=10)\n",
    "    ax.set_ylabel('bias')\n",
    "    ax.set_xlabel('weight')\n",
    "    ax.legend(['(A, b)'])\n",
    "    \n",
    "    ax.grid(True)    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Optimization"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Goal: minimize the loss given the data:\n",
    "$$\n",
    "\\min\\limits_{par \\in model} L(X_{train}, y_{train})\n",
    "=\\min\\limits_{par \\in model} \\frac{1}{n_{train}} \\sum_{i=1}^{n_{train}} L(x_i, model(x_i))\n",
    "$$\n",
    "\n",
    "In this case $par =\\{A, b\\}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Iterative gradient based optimization:\n",
    "\\begin{align*}\n",
    "par^{(0)} &= par_0\\\\\n",
    "par^{(k+1)} &=  par^{(k)} - \\eta^{(k)} \\nabla_{par} L(X_{train}, y_{train})\n",
    "\\end{align*}    \n",
    "with learning rate $\\eta^{(k)}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Gradients"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The model is \n",
    "$$\n",
    "model(x) = A x + b\n",
    "$$\n",
    "\n",
    "With $input\\_dim = output\\_dim = 1$ we have $A:=a\\in\\mathbb{R},\\ b\\in\\mathbb{R}$. \n",
    "\n",
    "For a data pair $(x, y)$ the loss is\n",
    "\\begin{align*}\n",
    "L(x, y) \n",
    "&= \\|model(x)-y\\|_2^2\\\\ \n",
    "&= (model(x)-y)^2\\\\\n",
    "&= (a x + b - y)^2\\\\\n",
    "&= a^2 x^2 + 2 a b x - 2 a xy + b^2 -2 b y + y^2.\n",
    "\\end{align*}\n",
    "\n",
    "We can compute\n",
    "\\begin{align*}\n",
    "\\nabla_a L(x, y) \n",
    "&= 2 a x^2 + 2 b x - 2 xy\n",
    "=2 x (a x + b - y)\\\\\n",
    "\\nabla_b L(x, y)\n",
    "&= 2 a x + 2 b - 2 y\n",
    "= 2 (ax + b - y).\n",
    "\\end{align*}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = torch.randn(1, input_dim)\n",
    "y =  torch.randn(1, output_dim)\n",
    "\n",
    "model.zero_grad()\n",
    "loss = loss_fun(model.forward(x),  y)\n",
    "loss.backward()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[2.7173]])\n",
      "tensor([[2.7173]], grad_fn=<MulBackward0>)\n",
      "tensor([-1.6603])\n",
      "tensor([[-1.6603]], grad_fn=<MulBackward0>)\n"
     ]
    }
   ],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "    print(model.linear.weight.grad)\n",
    "    print(2 * x * (model.linear.weight * x + model.linear.bias - y))\n",
    "    \n",
    "    print(model.linear.bias.grad)\n",
    "    print(2 * (model.linear.weight * x + model.linear.bias - y))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Handmade optimization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "\n",
    "    num_iter = 200\n",
    "    lr = 0.5 # 0.01\n",
    "\n",
    "    train_hist = {}\n",
    "    train_hist['weight'] = []\n",
    "    train_hist['bias'] = []\n",
    "\n",
    "    model.reset()\n",
    "    state_dict = model.state_dict()\n",
    "\n",
    "    for _ in range(num_iter):\n",
    "\n",
    "        model.zero_grad()\n",
    "        loss = loss_fun(model.forward(training_set.input_data), training_set.output_data)\n",
    "        loss.backward()\n",
    "\n",
    "        w = model.linear.weight.item()\n",
    "        b = model.linear.bias.item()\n",
    "\n",
    "        dw = model.linear.weight.grad.item()\n",
    "        db = model.linear.bias.grad.item()\n",
    "\n",
    "        state_dict['linear.weight'] += torch.tensor([-lr * dw])\n",
    "        state_dict['linear.bias'] += torch.tensor([-lr * db])\n",
    "        model.load_state_dict(state_dict)\n",
    "\n",
    "        train_hist['weight'].append(w)\n",
    "        train_hist['bias'].append(b)\n",
    "\n",
    "    for label in train_hist:\n",
    "        train_hist[label] = np.array(train_hist[label])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "    fig = plt.figure(figsize=(8, 8))\n",
    "    fig.clf()\n",
    "    ax = fig.gca()\n",
    "    levels = np.logspace(np.log(np.min(loss_values)), np.log(np.max(loss_values)), 20)\n",
    "    ax.contourf(ww, bb, loss_values, levels=levels, norm=colors.LogNorm())\n",
    "    ax.set_xlabel('weight')\n",
    "    ax.set_ylabel('bias')\n",
    "    ax.grid(True)\n",
    "    ax.set_xlim(-2, 2) \n",
    "    ax.set_ylim(-2, 2) \n",
    "    \n",
    "    ax.plot(train_hist['weight'], train_hist['bias'], '.-b')\n",
    "    ax.plot(A[0], b, 'r*', markersize=10)\n",
    "\n",
    "    ax.legend(['optim', '(A, b)'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Stochastic GD"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Avoid loading the full training set\n",
    "* Avoid evaluating the model on the full training set"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "At every step, compute the loss on a batch of data $(X^{(k)}, y^{(k)})\\sim (X_{train}, y_{train})$: \n",
    "\n",
    "\\begin{align*}\n",
    "L(X^{(k)}, y^{(k)}) := \\sum_{(x, y) \\in (X^{(k)}, y^{(k)})} L(x, model(x)).\n",
    "\\end{align*}    \n",
    "\n",
    "and then update with this approximated gradient:\n",
    "\\begin{align*}\n",
    "par^{(k+1)} &=  par^{(k)} - \\eta^{(k)} \\nabla_{par} L(X^{(k)}, y^{(k)}). \n",
    "\\end{align*}    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PyTorch `optim`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "lr = 0.1\n",
    "weight_decay = 5e-4\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=lr, weight_decay=weight_decay)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "More at [pytorch.org/docs/stable/optim.html](https://pytorch.org/docs/stable/optim.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_epochs = 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Epoch    1/ 100] [Batch    1/   9] Loss:  6.43e-01\n",
      "[Epoch    1/ 100] [Batch    2/   9] Loss:  4.28e-01\n",
      "[Epoch    1/ 100] [Batch    3/   9] Loss:  2.63e-01\n",
      "[Epoch    1/ 100] [Batch    4/   9] Loss:  1.34e-01\n",
      "[Epoch    1/ 100] [Batch    5/   9] Loss:  4.86e-02\n",
      "[Epoch    1/ 100] [Batch    6/   9] Loss:  1.49e-02\n",
      "[Epoch    1/ 100] [Batch    7/   9] Loss:  8.63e-03\n",
      "[Epoch    1/ 100] [Batch    8/   9] Loss:  2.77e-02\n",
      "[Epoch    1/ 100] [Batch    9/   9] Loss:  6.80e-02\n",
      "[Epoch    2/ 100] [Batch    1/   9] Loss:  7.90e-02\n",
      "[Epoch    2/ 100] [Batch    2/   9] Loss:  1.02e-01\n",
      "[Epoch    2/ 100] [Batch    3/   9] Loss:  1.02e-01\n",
      "[Epoch    2/ 100] [Batch    4/   9] Loss:  1.01e-01\n",
      "[Epoch    2/ 100] [Batch    5/   9] Loss:  8.37e-02\n",
      "[Epoch    2/ 100] [Batch    6/   9] Loss:  6.60e-02\n",
      "[Epoch    2/ 100] [Batch    7/   9] Loss:  4.42e-02\n",
      "[Epoch    2/ 100] [Batch    8/   9] Loss:  3.47e-02\n",
      "[Epoch    2/ 100] [Batch    9/   9] Loss:  1.73e-02\n",
      "[Epoch    3/ 100] [Batch    1/   9] Loss:  6.00e-03\n",
      "[Epoch    3/ 100] [Batch    2/   9] Loss:  3.97e-03\n",
      "[Epoch    3/ 100] [Batch    3/   9] Loss:  5.54e-03\n",
      "[Epoch    3/ 100] [Batch    4/   9] Loss:  1.06e-02\n",
      "[Epoch    3/ 100] [Batch    5/   9] Loss:  1.69e-02\n",
      "[Epoch    3/ 100] [Batch    6/   9] Loss:  2.51e-02\n",
      "[Epoch    3/ 100] [Batch    7/   9] Loss:  2.85e-02\n",
      "[Epoch    3/ 100] [Batch    8/   9] Loss:  2.82e-02\n",
      "[Epoch    3/ 100] [Batch    9/   9] Loss:  2.29e-02\n",
      "[Epoch    4/ 100] [Batch    1/   9] Loss:  2.21e-02\n",
      "[Epoch    4/ 100] [Batch    2/   9] Loss:  1.60e-02\n",
      "[Epoch    4/ 100] [Batch    3/   9] Loss:  1.08e-02\n",
      "[Epoch    4/ 100] [Batch    4/   9] Loss:  6.68e-03\n",
      "[Epoch    4/ 100] [Batch    5/   9] Loss:  4.14e-03\n",
      "[Epoch    4/ 100] [Batch    6/   9] Loss:  2.62e-03\n",
      "[Epoch    4/ 100] [Batch    7/   9] Loss:  2.32e-03\n",
      "[Epoch    4/ 100] [Batch    8/   9] Loss:  4.12e-03\n",
      "[Epoch    4/ 100] [Batch    9/   9] Loss:  3.63e-03\n",
      "[Epoch    5/ 100] [Batch    1/   9] Loss:  7.96e-03\n",
      "[Epoch    5/ 100] [Batch    2/   9] Loss:  8.92e-03\n",
      "[Epoch    5/ 100] [Batch    3/   9] Loss:  8.16e-03\n",
      "[Epoch    5/ 100] [Batch    4/   9] Loss:  8.93e-03\n",
      "[Epoch    5/ 100] [Batch    5/   9] Loss:  5.42e-03\n",
      "[Epoch    5/ 100] [Batch    6/   9] Loss:  5.20e-03\n",
      "[Epoch    5/ 100] [Batch    7/   9] Loss:  3.88e-03\n",
      "[Epoch    5/ 100] [Batch    8/   9] Loss:  2.19e-03\n",
      "[Epoch    5/ 100] [Batch    9/   9] Loss:  2.17e-03\n",
      "[Epoch    6/ 100] [Batch    1/   9] Loss:  2.14e-03\n",
      "[Epoch    6/ 100] [Batch    2/   9] Loss:  2.04e-03\n",
      "[Epoch    6/ 100] [Batch    3/   9] Loss:  2.43e-03\n",
      "[Epoch    6/ 100] [Batch    4/   9] Loss:  2.51e-03\n",
      "[Epoch    6/ 100] [Batch    5/   9] Loss:  4.03e-03\n",
      "[Epoch    6/ 100] [Batch    6/   9] Loss:  3.20e-03\n",
      "[Epoch    6/ 100] [Batch    7/   9] Loss:  3.71e-03\n",
      "[Epoch    6/ 100] [Batch    8/   9] Loss:  2.97e-03\n",
      "[Epoch    6/ 100] [Batch    9/   9] Loss:  2.18e-03\n",
      "[Epoch    7/ 100] [Batch    1/   9] Loss:  1.99e-03\n",
      "[Epoch    7/ 100] [Batch    2/   9] Loss:  1.53e-03\n",
      "[Epoch    7/ 100] [Batch    3/   9] Loss:  1.91e-03\n",
      "[Epoch    7/ 100] [Batch    4/   9] Loss:  1.58e-03\n",
      "[Epoch    7/ 100] [Batch    5/   9] Loss:  2.10e-03\n",
      "[Epoch    7/ 100] [Batch    6/   9] Loss:  1.76e-03\n",
      "[Epoch    7/ 100] [Batch    7/   9] Loss:  2.65e-03\n",
      "[Epoch    7/ 100] [Batch    8/   9] Loss:  2.05e-03\n",
      "[Epoch    7/ 100] [Batch    9/   9] Loss:  2.22e-03\n",
      "[Epoch    8/ 100] [Batch    1/   9] Loss:  2.14e-03\n",
      "[Epoch    8/ 100] [Batch    2/   9] Loss:  1.61e-03\n",
      "[Epoch    8/ 100] [Batch    3/   9] Loss:  1.86e-03\n",
      "[Epoch    8/ 100] [Batch    4/   9] Loss:  1.95e-03\n",
      "[Epoch    8/ 100] [Batch    5/   9] Loss:  1.88e-03\n",
      "[Epoch    8/ 100] [Batch    6/   9] Loss:  1.25e-03\n",
      "[Epoch    8/ 100] [Batch    7/   9] Loss:  2.21e-03\n",
      "[Epoch    8/ 100] [Batch    8/   9] Loss:  1.33e-03\n",
      "[Epoch    8/ 100] [Batch    9/   9] Loss:  1.50e-03\n",
      "[Epoch    9/ 100] [Batch    1/   9] Loss:  2.12e-03\n",
      "[Epoch    9/ 100] [Batch    2/   9] Loss:  1.70e-03\n",
      "[Epoch    9/ 100] [Batch    3/   9] Loss:  1.50e-03\n",
      "[Epoch    9/ 100] [Batch    4/   9] Loss:  1.64e-03\n",
      "[Epoch    9/ 100] [Batch    5/   9] Loss:  1.70e-03\n",
      "[Epoch    9/ 100] [Batch    6/   9] Loss:  1.62e-03\n",
      "[Epoch    9/ 100] [Batch    7/   9] Loss:  1.93e-03\n",
      "[Epoch    9/ 100] [Batch    8/   9] Loss:  1.57e-03\n",
      "[Epoch    9/ 100] [Batch    9/   9] Loss:  1.70e-03\n",
      "[Epoch   10/ 100] [Batch    1/   9] Loss:  1.69e-03\n",
      "[Epoch   10/ 100] [Batch    2/   9] Loss:  1.58e-03\n",
      "[Epoch   10/ 100] [Batch    3/   9] Loss:  1.46e-03\n",
      "[Epoch   10/ 100] [Batch    4/   9] Loss:  1.95e-03\n",
      "[Epoch   10/ 100] [Batch    5/   9] Loss:  1.42e-03\n",
      "[Epoch   10/ 100] [Batch    6/   9] Loss:  1.66e-03\n",
      "[Epoch   10/ 100] [Batch    7/   9] Loss:  1.67e-03\n",
      "[Epoch   10/ 100] [Batch    8/   9] Loss:  1.70e-03\n",
      "[Epoch   10/ 100] [Batch    9/   9] Loss:  2.12e-03\n",
      "[Epoch   11/ 100] [Batch    1/   9] Loss:  1.49e-03\n",
      "[Epoch   11/ 100] [Batch    2/   9] Loss:  1.41e-03\n",
      "[Epoch   11/ 100] [Batch    3/   9] Loss:  1.74e-03\n",
      "[Epoch   11/ 100] [Batch    4/   9] Loss:  1.50e-03\n",
      "[Epoch   11/ 100] [Batch    5/   9] Loss:  1.61e-03\n",
      "[Epoch   11/ 100] [Batch    6/   9] Loss:  2.02e-03\n",
      "[Epoch   11/ 100] [Batch    7/   9] Loss:  1.73e-03\n",
      "[Epoch   11/ 100] [Batch    8/   9] Loss:  1.39e-03\n",
      "[Epoch   11/ 100] [Batch    9/   9] Loss:  2.42e-03\n",
      "[Epoch   12/ 100] [Batch    1/   9] Loss:  1.61e-03\n",
      "[Epoch   12/ 100] [Batch    2/   9] Loss:  1.64e-03\n",
      "[Epoch   12/ 100] [Batch    3/   9] Loss:  1.40e-03\n",
      "[Epoch   12/ 100] [Batch    4/   9] Loss:  1.91e-03\n",
      "[Epoch   12/ 100] [Batch    5/   9] Loss:  1.50e-03\n",
      "[Epoch   12/ 100] [Batch    6/   9] Loss:  1.82e-03\n",
      "[Epoch   12/ 100] [Batch    7/   9] Loss:  1.69e-03\n",
      "[Epoch   12/ 100] [Batch    8/   9] Loss:  1.49e-03\n",
      "[Epoch   12/ 100] [Batch    9/   9] Loss:  1.60e-03\n",
      "[Epoch   13/ 100] [Batch    1/   9] Loss:  1.90e-03\n",
      "[Epoch   13/ 100] [Batch    2/   9] Loss:  1.28e-03\n",
      "[Epoch   13/ 100] [Batch    3/   9] Loss:  1.81e-03\n",
      "[Epoch   13/ 100] [Batch    4/   9] Loss:  1.66e-03\n",
      "[Epoch   13/ 100] [Batch    5/   9] Loss:  1.59e-03\n",
      "[Epoch   13/ 100] [Batch    6/   9] Loss:  1.50e-03\n",
      "[Epoch   13/ 100] [Batch    7/   9] Loss:  1.45e-03\n",
      "[Epoch   13/ 100] [Batch    8/   9] Loss:  1.82e-03\n",
      "[Epoch   13/ 100] [Batch    9/   9] Loss:  1.50e-03\n",
      "[Epoch   14/ 100] [Batch    1/   9] Loss:  1.79e-03\n",
      "[Epoch   14/ 100] [Batch    2/   9] Loss:  1.52e-03\n",
      "[Epoch   14/ 100] [Batch    3/   9] Loss:  1.74e-03\n",
      "[Epoch   14/ 100] [Batch    4/   9] Loss:  1.83e-03\n",
      "[Epoch   14/ 100] [Batch    5/   9] Loss:  1.56e-03\n",
      "[Epoch   14/ 100] [Batch    6/   9] Loss:  1.39e-03\n",
      "[Epoch   14/ 100] [Batch    7/   9] Loss:  1.41e-03\n",
      "[Epoch   14/ 100] [Batch    8/   9] Loss:  1.77e-03\n",
      "[Epoch   14/ 100] [Batch    9/   9] Loss:  1.50e-03\n",
      "[Epoch   15/ 100] [Batch    1/   9] Loss:  1.72e-03\n",
      "[Epoch   15/ 100] [Batch    2/   9] Loss:  1.34e-03\n",
      "[Epoch   15/ 100] [Batch    3/   9] Loss:  1.66e-03\n",
      "[Epoch   15/ 100] [Batch    4/   9] Loss:  1.67e-03\n",
      "[Epoch   15/ 100] [Batch    5/   9] Loss:  1.61e-03\n",
      "[Epoch   15/ 100] [Batch    6/   9] Loss:  1.59e-03\n",
      "[Epoch   15/ 100] [Batch    7/   9] Loss:  1.72e-03\n",
      "[Epoch   15/ 100] [Batch    8/   9] Loss:  1.70e-03\n",
      "[Epoch   15/ 100] [Batch    9/   9] Loss:  1.63e-03\n",
      "[Epoch   16/ 100] [Batch    1/   9] Loss:  1.47e-03\n",
      "[Epoch   16/ 100] [Batch    2/   9] Loss:  1.74e-03\n",
      "[Epoch   16/ 100] [Batch    3/   9] Loss:  1.37e-03\n",
      "[Epoch   16/ 100] [Batch    4/   9] Loss:  1.44e-03\n",
      "[Epoch   16/ 100] [Batch    5/   9] Loss:  1.71e-03\n",
      "[Epoch   16/ 100] [Batch    6/   9] Loss:  2.05e-03\n",
      "[Epoch   16/ 100] [Batch    7/   9] Loss:  1.49e-03\n",
      "[Epoch   16/ 100] [Batch    8/   9] Loss:  1.72e-03\n",
      "[Epoch   16/ 100] [Batch    9/   9] Loss:  1.55e-03\n",
      "[Epoch   17/ 100] [Batch    1/   9] Loss:  1.57e-03\n",
      "[Epoch   17/ 100] [Batch    2/   9] Loss:  1.98e-03\n",
      "[Epoch   17/ 100] [Batch    3/   9] Loss:  1.19e-03\n",
      "[Epoch   17/ 100] [Batch    4/   9] Loss:  1.60e-03\n",
      "[Epoch   17/ 100] [Batch    5/   9] Loss:  1.96e-03\n",
      "[Epoch   17/ 100] [Batch    6/   9] Loss:  1.54e-03\n",
      "[Epoch   17/ 100] [Batch    7/   9] Loss:  1.48e-03\n",
      "[Epoch   17/ 100] [Batch    8/   9] Loss:  1.75e-03\n",
      "[Epoch   17/ 100] [Batch    9/   9] Loss:  1.44e-03\n",
      "[Epoch   18/ 100] [Batch    1/   9] Loss:  1.41e-03\n",
      "[Epoch   18/ 100] [Batch    2/   9] Loss:  2.07e-03\n",
      "[Epoch   18/ 100] [Batch    3/   9] Loss:  1.63e-03\n",
      "[Epoch   18/ 100] [Batch    4/   9] Loss:  1.90e-03\n",
      "[Epoch   18/ 100] [Batch    5/   9] Loss:  1.64e-03\n",
      "[Epoch   18/ 100] [Batch    6/   9] Loss:  1.29e-03\n",
      "[Epoch   18/ 100] [Batch    7/   9] Loss:  1.69e-03\n",
      "[Epoch   18/ 100] [Batch    8/   9] Loss:  1.26e-03\n",
      "[Epoch   18/ 100] [Batch    9/   9] Loss:  2.04e-03\n",
      "[Epoch   19/ 100] [Batch    1/   9] Loss:  1.47e-03\n",
      "[Epoch   19/ 100] [Batch    2/   9] Loss:  1.87e-03\n",
      "[Epoch   19/ 100] [Batch    3/   9] Loss:  1.51e-03\n",
      "[Epoch   19/ 100] [Batch    4/   9] Loss:  1.66e-03\n",
      "[Epoch   19/ 100] [Batch    5/   9] Loss:  1.64e-03\n",
      "[Epoch   19/ 100] [Batch    6/   9] Loss:  1.63e-03\n",
      "[Epoch   19/ 100] [Batch    7/   9] Loss:  1.43e-03\n",
      "[Epoch   19/ 100] [Batch    8/   9] Loss:  1.82e-03\n",
      "[Epoch   19/ 100] [Batch    9/   9] Loss:  2.06e-03\n",
      "[Epoch   20/ 100] [Batch    1/   9] Loss:  1.93e-03\n",
      "[Epoch   20/ 100] [Batch    2/   9] Loss:  1.66e-03\n",
      "[Epoch   20/ 100] [Batch    3/   9] Loss:  1.67e-03\n",
      "[Epoch   20/ 100] [Batch    4/   9] Loss:  1.45e-03\n",
      "[Epoch   20/ 100] [Batch    5/   9] Loss:  1.78e-03\n",
      "[Epoch   20/ 100] [Batch    6/   9] Loss:  1.51e-03\n",
      "[Epoch   20/ 100] [Batch    7/   9] Loss:  1.58e-03\n",
      "[Epoch   20/ 100] [Batch    8/   9] Loss:  1.43e-03\n",
      "[Epoch   20/ 100] [Batch    9/   9] Loss:  2.23e-03\n",
      "[Epoch   21/ 100] [Batch    1/   9] Loss:  1.72e-03\n",
      "[Epoch   21/ 100] [Batch    2/   9] Loss:  1.74e-03\n",
      "[Epoch   21/ 100] [Batch    3/   9] Loss:  1.97e-03\n",
      "[Epoch   21/ 100] [Batch    4/   9] Loss:  1.47e-03\n",
      "[Epoch   21/ 100] [Batch    5/   9] Loss:  1.59e-03\n",
      "[Epoch   21/ 100] [Batch    6/   9] Loss:  1.35e-03\n",
      "[Epoch   21/ 100] [Batch    7/   9] Loss:  1.72e-03\n",
      "[Epoch   21/ 100] [Batch    8/   9] Loss:  1.55e-03\n",
      "[Epoch   21/ 100] [Batch    9/   9] Loss:  1.37e-03\n",
      "[Epoch   22/ 100] [Batch    1/   9] Loss:  1.78e-03\n",
      "[Epoch   22/ 100] [Batch    2/   9] Loss:  1.57e-03\n",
      "[Epoch   22/ 100] [Batch    3/   9] Loss:  1.45e-03\n",
      "[Epoch   22/ 100] [Batch    4/   9] Loss:  2.07e-03\n",
      "[Epoch   22/ 100] [Batch    5/   9] Loss:  1.63e-03\n",
      "[Epoch   22/ 100] [Batch    6/   9] Loss:  1.60e-03\n",
      "[Epoch   22/ 100] [Batch    7/   9] Loss:  1.45e-03\n",
      "[Epoch   22/ 100] [Batch    8/   9] Loss:  1.37e-03\n",
      "[Epoch   22/ 100] [Batch    9/   9] Loss:  2.30e-03\n",
      "[Epoch   23/ 100] [Batch    1/   9] Loss:  1.53e-03\n",
      "[Epoch   23/ 100] [Batch    2/   9] Loss:  1.59e-03\n",
      "[Epoch   23/ 100] [Batch    3/   9] Loss:  1.84e-03\n",
      "[Epoch   23/ 100] [Batch    4/   9] Loss:  1.73e-03\n",
      "[Epoch   23/ 100] [Batch    5/   9] Loss:  1.52e-03\n",
      "[Epoch   23/ 100] [Batch    6/   9] Loss:  1.67e-03\n",
      "[Epoch   23/ 100] [Batch    7/   9] Loss:  1.48e-03\n",
      "[Epoch   23/ 100] [Batch    8/   9] Loss:  1.59e-03\n",
      "[Epoch   23/ 100] [Batch    9/   9] Loss:  2.14e-03\n",
      "[Epoch   24/ 100] [Batch    1/   9] Loss:  1.66e-03\n",
      "[Epoch   24/ 100] [Batch    2/   9] Loss:  1.55e-03\n",
      "[Epoch   24/ 100] [Batch    3/   9] Loss:  1.33e-03\n",
      "[Epoch   24/ 100] [Batch    4/   9] Loss:  1.48e-03\n",
      "[Epoch   24/ 100] [Batch    5/   9] Loss:  1.99e-03\n",
      "[Epoch   24/ 100] [Batch    6/   9] Loss:  1.54e-03\n",
      "[Epoch   24/ 100] [Batch    7/   9] Loss:  1.76e-03\n",
      "[Epoch   24/ 100] [Batch    8/   9] Loss:  1.64e-03\n",
      "[Epoch   24/ 100] [Batch    9/   9] Loss:  2.06e-03\n",
      "[Epoch   25/ 100] [Batch    1/   9] Loss:  2.07e-03\n",
      "[Epoch   25/ 100] [Batch    2/   9] Loss:  1.74e-03\n",
      "[Epoch   25/ 100] [Batch    3/   9] Loss:  1.49e-03\n",
      "[Epoch   25/ 100] [Batch    4/   9] Loss:  1.93e-03\n",
      "[Epoch   25/ 100] [Batch    5/   9] Loss:  1.45e-03\n",
      "[Epoch   25/ 100] [Batch    6/   9] Loss:  1.25e-03\n",
      "[Epoch   25/ 100] [Batch    7/   9] Loss:  1.69e-03\n",
      "[Epoch   25/ 100] [Batch    8/   9] Loss:  1.47e-03\n",
      "[Epoch   25/ 100] [Batch    9/   9] Loss:  1.44e-03\n",
      "[Epoch   26/ 100] [Batch    1/   9] Loss:  1.75e-03\n",
      "[Epoch   26/ 100] [Batch    2/   9] Loss:  1.70e-03\n",
      "[Epoch   26/ 100] [Batch    3/   9] Loss:  1.60e-03\n",
      "[Epoch   26/ 100] [Batch    4/   9] Loss:  1.24e-03\n",
      "[Epoch   26/ 100] [Batch    5/   9] Loss:  1.30e-03\n",
      "[Epoch   26/ 100] [Batch    6/   9] Loss:  2.01e-03\n",
      "[Epoch   26/ 100] [Batch    7/   9] Loss:  1.79e-03\n",
      "[Epoch   26/ 100] [Batch    8/   9] Loss:  1.32e-03\n",
      "[Epoch   26/ 100] [Batch    9/   9] Loss:  2.48e-03\n",
      "[Epoch   27/ 100] [Batch    1/   9] Loss:  1.61e-03\n",
      "[Epoch   27/ 100] [Batch    2/   9] Loss:  1.85e-03\n",
      "[Epoch   27/ 100] [Batch    3/   9] Loss:  1.48e-03\n",
      "[Epoch   27/ 100] [Batch    4/   9] Loss:  1.35e-03\n",
      "[Epoch   27/ 100] [Batch    5/   9] Loss:  1.60e-03\n",
      "[Epoch   27/ 100] [Batch    6/   9] Loss:  1.51e-03\n",
      "[Epoch   27/ 100] [Batch    7/   9] Loss:  1.59e-03\n",
      "[Epoch   27/ 100] [Batch    8/   9] Loss:  1.90e-03\n",
      "[Epoch   27/ 100] [Batch    9/   9] Loss:  2.02e-03\n",
      "[Epoch   28/ 100] [Batch    1/   9] Loss:  1.27e-03\n",
      "[Epoch   28/ 100] [Batch    2/   9] Loss:  1.69e-03\n",
      "[Epoch   28/ 100] [Batch    3/   9] Loss:  1.54e-03\n",
      "[Epoch   28/ 100] [Batch    4/   9] Loss:  1.56e-03\n",
      "[Epoch   28/ 100] [Batch    5/   9] Loss:  1.82e-03\n",
      "[Epoch   28/ 100] [Batch    6/   9] Loss:  1.67e-03\n",
      "[Epoch   28/ 100] [Batch    7/   9] Loss:  1.91e-03\n",
      "[Epoch   28/ 100] [Batch    8/   9] Loss:  1.42e-03\n",
      "[Epoch   28/ 100] [Batch    9/   9] Loss:  1.94e-03\n",
      "[Epoch   29/ 100] [Batch    1/   9] Loss:  1.61e-03\n",
      "[Epoch   29/ 100] [Batch    2/   9] Loss:  1.88e-03\n",
      "[Epoch   29/ 100] [Batch    3/   9] Loss:  1.79e-03\n",
      "[Epoch   29/ 100] [Batch    4/   9] Loss:  1.54e-03\n",
      "[Epoch   29/ 100] [Batch    5/   9] Loss:  1.29e-03\n",
      "[Epoch   29/ 100] [Batch    6/   9] Loss:  1.59e-03\n",
      "[Epoch   29/ 100] [Batch    7/   9] Loss:  1.74e-03\n",
      "[Epoch   29/ 100] [Batch    8/   9] Loss:  1.56e-03\n",
      "[Epoch   29/ 100] [Batch    9/   9] Loss:  1.87e-03\n",
      "[Epoch   30/ 100] [Batch    1/   9] Loss:  1.37e-03\n",
      "[Epoch   30/ 100] [Batch    2/   9] Loss:  1.61e-03\n",
      "[Epoch   30/ 100] [Batch    3/   9] Loss:  1.88e-03\n",
      "[Epoch   30/ 100] [Batch    4/   9] Loss:  1.57e-03\n",
      "[Epoch   30/ 100] [Batch    5/   9] Loss:  1.74e-03\n",
      "[Epoch   30/ 100] [Batch    6/   9] Loss:  1.59e-03\n",
      "[Epoch   30/ 100] [Batch    7/   9] Loss:  1.85e-03\n",
      "[Epoch   30/ 100] [Batch    8/   9] Loss:  1.49e-03\n",
      "[Epoch   30/ 100] [Batch    9/   9] Loss:  1.26e-03\n",
      "[Epoch   31/ 100] [Batch    1/   9] Loss:  1.81e-03\n",
      "[Epoch   31/ 100] [Batch    2/   9] Loss:  1.46e-03\n",
      "[Epoch   31/ 100] [Batch    3/   9] Loss:  1.56e-03\n",
      "[Epoch   31/ 100] [Batch    4/   9] Loss:  1.74e-03\n",
      "[Epoch   31/ 100] [Batch    5/   9] Loss:  2.04e-03\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Epoch   31/ 100] [Batch    6/   9] Loss:  1.44e-03\n",
      "[Epoch   31/ 100] [Batch    7/   9] Loss:  1.67e-03\n",
      "[Epoch   31/ 100] [Batch    8/   9] Loss:  1.29e-03\n",
      "[Epoch   31/ 100] [Batch    9/   9] Loss:  1.57e-03\n",
      "[Epoch   32/ 100] [Batch    1/   9] Loss:  1.88e-03\n",
      "[Epoch   32/ 100] [Batch    2/   9] Loss:  1.71e-03\n",
      "[Epoch   32/ 100] [Batch    3/   9] Loss:  1.70e-03\n",
      "[Epoch   32/ 100] [Batch    4/   9] Loss:  1.32e-03\n",
      "[Epoch   32/ 100] [Batch    5/   9] Loss:  1.74e-03\n",
      "[Epoch   32/ 100] [Batch    6/   9] Loss:  1.44e-03\n",
      "[Epoch   32/ 100] [Batch    7/   9] Loss:  1.72e-03\n",
      "[Epoch   32/ 100] [Batch    8/   9] Loss:  1.62e-03\n",
      "[Epoch   32/ 100] [Batch    9/   9] Loss:  1.17e-03\n",
      "[Epoch   33/ 100] [Batch    1/   9] Loss:  1.86e-03\n",
      "[Epoch   33/ 100] [Batch    2/   9] Loss:  1.51e-03\n",
      "[Epoch   33/ 100] [Batch    3/   9] Loss:  1.34e-03\n",
      "[Epoch   33/ 100] [Batch    4/   9] Loss:  2.01e-03\n",
      "[Epoch   33/ 100] [Batch    5/   9] Loss:  1.52e-03\n",
      "[Epoch   33/ 100] [Batch    6/   9] Loss:  1.25e-03\n",
      "[Epoch   33/ 100] [Batch    7/   9] Loss:  1.41e-03\n",
      "[Epoch   33/ 100] [Batch    8/   9] Loss:  1.94e-03\n",
      "[Epoch   33/ 100] [Batch    9/   9] Loss:  2.07e-03\n",
      "[Epoch   34/ 100] [Batch    1/   9] Loss:  1.63e-03\n",
      "[Epoch   34/ 100] [Batch    2/   9] Loss:  1.68e-03\n",
      "[Epoch   34/ 100] [Batch    3/   9] Loss:  1.81e-03\n",
      "[Epoch   34/ 100] [Batch    4/   9] Loss:  1.21e-03\n",
      "[Epoch   34/ 100] [Batch    5/   9] Loss:  1.78e-03\n",
      "[Epoch   34/ 100] [Batch    6/   9] Loss:  1.60e-03\n",
      "[Epoch   34/ 100] [Batch    7/   9] Loss:  1.55e-03\n",
      "[Epoch   34/ 100] [Batch    8/   9] Loss:  1.64e-03\n",
      "[Epoch   34/ 100] [Batch    9/   9] Loss:  2.01e-03\n",
      "[Epoch   35/ 100] [Batch    1/   9] Loss:  1.42e-03\n",
      "[Epoch   35/ 100] [Batch    2/   9] Loss:  1.96e-03\n",
      "[Epoch   35/ 100] [Batch    3/   9] Loss:  1.72e-03\n",
      "[Epoch   35/ 100] [Batch    4/   9] Loss:  1.49e-03\n",
      "[Epoch   35/ 100] [Batch    5/   9] Loss:  1.49e-03\n",
      "[Epoch   35/ 100] [Batch    6/   9] Loss:  1.36e-03\n",
      "[Epoch   35/ 100] [Batch    7/   9] Loss:  1.80e-03\n",
      "[Epoch   35/ 100] [Batch    8/   9] Loss:  1.69e-03\n",
      "[Epoch   35/ 100] [Batch    9/   9] Loss:  1.84e-03\n",
      "[Epoch   36/ 100] [Batch    1/   9] Loss:  1.61e-03\n",
      "[Epoch   36/ 100] [Batch    2/   9] Loss:  1.42e-03\n",
      "[Epoch   36/ 100] [Batch    3/   9] Loss:  1.69e-03\n",
      "[Epoch   36/ 100] [Batch    4/   9] Loss:  2.09e-03\n",
      "[Epoch   36/ 100] [Batch    5/   9] Loss:  1.22e-03\n",
      "[Epoch   36/ 100] [Batch    6/   9] Loss:  1.69e-03\n",
      "[Epoch   36/ 100] [Batch    7/   9] Loss:  1.81e-03\n",
      "[Epoch   36/ 100] [Batch    8/   9] Loss:  1.63e-03\n",
      "[Epoch   36/ 100] [Batch    9/   9] Loss:  1.20e-03\n",
      "[Epoch   37/ 100] [Batch    1/   9] Loss:  1.59e-03\n",
      "[Epoch   37/ 100] [Batch    2/   9] Loss:  2.20e-03\n",
      "[Epoch   37/ 100] [Batch    3/   9] Loss:  1.80e-03\n",
      "[Epoch   37/ 100] [Batch    4/   9] Loss:  1.46e-03\n",
      "[Epoch   37/ 100] [Batch    5/   9] Loss:  1.69e-03\n",
      "[Epoch   37/ 100] [Batch    6/   9] Loss:  1.41e-03\n",
      "[Epoch   37/ 100] [Batch    7/   9] Loss:  1.41e-03\n",
      "[Epoch   37/ 100] [Batch    8/   9] Loss:  1.49e-03\n",
      "[Epoch   37/ 100] [Batch    9/   9] Loss:  1.50e-03\n",
      "[Epoch   38/ 100] [Batch    1/   9] Loss:  1.37e-03\n",
      "[Epoch   38/ 100] [Batch    2/   9] Loss:  1.74e-03\n",
      "[Epoch   38/ 100] [Batch    3/   9] Loss:  1.83e-03\n",
      "[Epoch   38/ 100] [Batch    4/   9] Loss:  1.23e-03\n",
      "[Epoch   38/ 100] [Batch    5/   9] Loss:  1.91e-03\n",
      "[Epoch   38/ 100] [Batch    6/   9] Loss:  1.45e-03\n",
      "[Epoch   38/ 100] [Batch    7/   9] Loss:  1.82e-03\n",
      "[Epoch   38/ 100] [Batch    8/   9] Loss:  1.48e-03\n",
      "[Epoch   38/ 100] [Batch    9/   9] Loss:  2.43e-03\n",
      "[Epoch   39/ 100] [Batch    1/   9] Loss:  1.36e-03\n",
      "[Epoch   39/ 100] [Batch    2/   9] Loss:  1.76e-03\n",
      "[Epoch   39/ 100] [Batch    3/   9] Loss:  1.71e-03\n",
      "[Epoch   39/ 100] [Batch    4/   9] Loss:  1.90e-03\n",
      "[Epoch   39/ 100] [Batch    5/   9] Loss:  1.81e-03\n",
      "[Epoch   39/ 100] [Batch    6/   9] Loss:  1.19e-03\n",
      "[Epoch   39/ 100] [Batch    7/   9] Loss:  1.59e-03\n",
      "[Epoch   39/ 100] [Batch    8/   9] Loss:  1.52e-03\n",
      "[Epoch   39/ 100] [Batch    9/   9] Loss:  2.06e-03\n",
      "[Epoch   40/ 100] [Batch    1/   9] Loss:  1.70e-03\n",
      "[Epoch   40/ 100] [Batch    2/   9] Loss:  1.63e-03\n",
      "[Epoch   40/ 100] [Batch    3/   9] Loss:  1.63e-03\n",
      "[Epoch   40/ 100] [Batch    4/   9] Loss:  1.67e-03\n",
      "[Epoch   40/ 100] [Batch    5/   9] Loss:  1.68e-03\n",
      "[Epoch   40/ 100] [Batch    6/   9] Loss:  1.61e-03\n",
      "[Epoch   40/ 100] [Batch    7/   9] Loss:  1.67e-03\n",
      "[Epoch   40/ 100] [Batch    8/   9] Loss:  1.61e-03\n",
      "[Epoch   40/ 100] [Batch    9/   9] Loss:  1.22e-03\n",
      "[Epoch   41/ 100] [Batch    1/   9] Loss:  1.42e-03\n",
      "[Epoch   41/ 100] [Batch    2/   9] Loss:  1.58e-03\n",
      "[Epoch   41/ 100] [Batch    3/   9] Loss:  1.64e-03\n",
      "[Epoch   41/ 100] [Batch    4/   9] Loss:  1.66e-03\n",
      "[Epoch   41/ 100] [Batch    5/   9] Loss:  1.64e-03\n",
      "[Epoch   41/ 100] [Batch    6/   9] Loss:  1.77e-03\n",
      "[Epoch   41/ 100] [Batch    7/   9] Loss:  1.47e-03\n",
      "[Epoch   41/ 100] [Batch    8/   9] Loss:  2.00e-03\n",
      "[Epoch   41/ 100] [Batch    9/   9] Loss:  1.19e-03\n",
      "[Epoch   42/ 100] [Batch    1/   9] Loss:  1.64e-03\n",
      "[Epoch   42/ 100] [Batch    2/   9] Loss:  1.65e-03\n",
      "[Epoch   42/ 100] [Batch    3/   9] Loss:  1.75e-03\n",
      "[Epoch   42/ 100] [Batch    4/   9] Loss:  1.68e-03\n",
      "[Epoch   42/ 100] [Batch    5/   9] Loss:  1.66e-03\n",
      "[Epoch   42/ 100] [Batch    6/   9] Loss:  1.74e-03\n",
      "[Epoch   42/ 100] [Batch    7/   9] Loss:  1.58e-03\n",
      "[Epoch   42/ 100] [Batch    8/   9] Loss:  1.32e-03\n",
      "[Epoch   42/ 100] [Batch    9/   9] Loss:  1.65e-03\n",
      "[Epoch   43/ 100] [Batch    1/   9] Loss:  1.55e-03\n",
      "[Epoch   43/ 100] [Batch    2/   9] Loss:  1.82e-03\n",
      "[Epoch   43/ 100] [Batch    3/   9] Loss:  1.58e-03\n",
      "[Epoch   43/ 100] [Batch    4/   9] Loss:  1.53e-03\n",
      "[Epoch   43/ 100] [Batch    5/   9] Loss:  1.51e-03\n",
      "[Epoch   43/ 100] [Batch    6/   9] Loss:  1.82e-03\n",
      "[Epoch   43/ 100] [Batch    7/   9] Loss:  1.55e-03\n",
      "[Epoch   43/ 100] [Batch    8/   9] Loss:  1.73e-03\n",
      "[Epoch   43/ 100] [Batch    9/   9] Loss:  1.31e-03\n",
      "[Epoch   44/ 100] [Batch    1/   9] Loss:  1.35e-03\n",
      "[Epoch   44/ 100] [Batch    2/   9] Loss:  1.46e-03\n",
      "[Epoch   44/ 100] [Batch    3/   9] Loss:  1.71e-03\n",
      "[Epoch   44/ 100] [Batch    4/   9] Loss:  1.49e-03\n",
      "[Epoch   44/ 100] [Batch    5/   9] Loss:  1.70e-03\n",
      "[Epoch   44/ 100] [Batch    6/   9] Loss:  1.86e-03\n",
      "[Epoch   44/ 100] [Batch    7/   9] Loss:  1.84e-03\n",
      "[Epoch   44/ 100] [Batch    8/   9] Loss:  1.63e-03\n",
      "[Epoch   44/ 100] [Batch    9/   9] Loss:  1.66e-03\n",
      "[Epoch   45/ 100] [Batch    1/   9] Loss:  1.45e-03\n",
      "[Epoch   45/ 100] [Batch    2/   9] Loss:  1.90e-03\n",
      "[Epoch   45/ 100] [Batch    3/   9] Loss:  1.47e-03\n",
      "[Epoch   45/ 100] [Batch    4/   9] Loss:  1.39e-03\n",
      "[Epoch   45/ 100] [Batch    5/   9] Loss:  1.49e-03\n",
      "[Epoch   45/ 100] [Batch    6/   9] Loss:  1.37e-03\n",
      "[Epoch   45/ 100] [Batch    7/   9] Loss:  1.79e-03\n",
      "[Epoch   45/ 100] [Batch    8/   9] Loss:  2.03e-03\n",
      "[Epoch   45/ 100] [Batch    9/   9] Loss:  2.12e-03\n",
      "[Epoch   46/ 100] [Batch    1/   9] Loss:  9.91e-04\n",
      "[Epoch   46/ 100] [Batch    2/   9] Loss:  1.74e-03\n",
      "[Epoch   46/ 100] [Batch    3/   9] Loss:  2.01e-03\n",
      "[Epoch   46/ 100] [Batch    4/   9] Loss:  1.41e-03\n",
      "[Epoch   46/ 100] [Batch    5/   9] Loss:  1.84e-03\n",
      "[Epoch   46/ 100] [Batch    6/   9] Loss:  1.28e-03\n",
      "[Epoch   46/ 100] [Batch    7/   9] Loss:  2.09e-03\n",
      "[Epoch   46/ 100] [Batch    8/   9] Loss:  1.69e-03\n",
      "[Epoch   46/ 100] [Batch    9/   9] Loss:  1.45e-03\n",
      "[Epoch   47/ 100] [Batch    1/   9] Loss:  1.67e-03\n",
      "[Epoch   47/ 100] [Batch    2/   9] Loss:  1.54e-03\n",
      "[Epoch   47/ 100] [Batch    3/   9] Loss:  1.66e-03\n",
      "[Epoch   47/ 100] [Batch    4/   9] Loss:  1.86e-03\n",
      "[Epoch   47/ 100] [Batch    5/   9] Loss:  1.98e-03\n",
      "[Epoch   47/ 100] [Batch    6/   9] Loss:  1.60e-03\n",
      "[Epoch   47/ 100] [Batch    7/   9] Loss:  1.67e-03\n",
      "[Epoch   47/ 100] [Batch    8/   9] Loss:  1.61e-03\n",
      "[Epoch   47/ 100] [Batch    9/   9] Loss:  1.71e-03\n",
      "[Epoch   48/ 100] [Batch    1/   9] Loss:  1.64e-03\n",
      "[Epoch   48/ 100] [Batch    2/   9] Loss:  1.73e-03\n",
      "[Epoch   48/ 100] [Batch    3/   9] Loss:  1.38e-03\n",
      "[Epoch   48/ 100] [Batch    4/   9] Loss:  1.85e-03\n",
      "[Epoch   48/ 100] [Batch    5/   9] Loss:  1.54e-03\n",
      "[Epoch   48/ 100] [Batch    6/   9] Loss:  1.89e-03\n",
      "[Epoch   48/ 100] [Batch    7/   9] Loss:  1.83e-03\n",
      "[Epoch   48/ 100] [Batch    8/   9] Loss:  1.64e-03\n",
      "[Epoch   48/ 100] [Batch    9/   9] Loss:  1.39e-03\n",
      "[Epoch   49/ 100] [Batch    1/   9] Loss:  2.02e-03\n",
      "[Epoch   49/ 100] [Batch    2/   9] Loss:  1.79e-03\n",
      "[Epoch   49/ 100] [Batch    3/   9] Loss:  1.43e-03\n",
      "[Epoch   49/ 100] [Batch    4/   9] Loss:  1.71e-03\n",
      "[Epoch   49/ 100] [Batch    5/   9] Loss:  1.29e-03\n",
      "[Epoch   49/ 100] [Batch    6/   9] Loss:  1.57e-03\n",
      "[Epoch   49/ 100] [Batch    7/   9] Loss:  1.69e-03\n",
      "[Epoch   49/ 100] [Batch    8/   9] Loss:  1.65e-03\n",
      "[Epoch   49/ 100] [Batch    9/   9] Loss:  1.64e-03\n",
      "[Epoch   50/ 100] [Batch    1/   9] Loss:  1.71e-03\n",
      "[Epoch   50/ 100] [Batch    2/   9] Loss:  1.51e-03\n",
      "[Epoch   50/ 100] [Batch    3/   9] Loss:  1.85e-03\n",
      "[Epoch   50/ 100] [Batch    4/   9] Loss:  1.75e-03\n",
      "[Epoch   50/ 100] [Batch    5/   9] Loss:  1.42e-03\n",
      "[Epoch   50/ 100] [Batch    6/   9] Loss:  1.53e-03\n",
      "[Epoch   50/ 100] [Batch    7/   9] Loss:  1.78e-03\n",
      "[Epoch   50/ 100] [Batch    8/   9] Loss:  1.84e-03\n",
      "[Epoch   50/ 100] [Batch    9/   9] Loss:  1.52e-03\n",
      "[Epoch   51/ 100] [Batch    1/   9] Loss:  1.81e-03\n",
      "[Epoch   51/ 100] [Batch    2/   9] Loss:  1.72e-03\n",
      "[Epoch   51/ 100] [Batch    3/   9] Loss:  1.58e-03\n",
      "[Epoch   51/ 100] [Batch    4/   9] Loss:  1.67e-03\n",
      "[Epoch   51/ 100] [Batch    5/   9] Loss:  1.62e-03\n",
      "[Epoch   51/ 100] [Batch    6/   9] Loss:  1.45e-03\n",
      "[Epoch   51/ 100] [Batch    7/   9] Loss:  1.30e-03\n",
      "[Epoch   51/ 100] [Batch    8/   9] Loss:  2.06e-03\n",
      "[Epoch   51/ 100] [Batch    9/   9] Loss:  2.02e-03\n",
      "[Epoch   52/ 100] [Batch    1/   9] Loss:  1.95e-03\n",
      "[Epoch   52/ 100] [Batch    2/   9] Loss:  1.72e-03\n",
      "[Epoch   52/ 100] [Batch    3/   9] Loss:  1.68e-03\n",
      "[Epoch   52/ 100] [Batch    4/   9] Loss:  1.88e-03\n",
      "[Epoch   52/ 100] [Batch    5/   9] Loss:  1.34e-03\n",
      "[Epoch   52/ 100] [Batch    6/   9] Loss:  1.36e-03\n",
      "[Epoch   52/ 100] [Batch    7/   9] Loss:  1.67e-03\n",
      "[Epoch   52/ 100] [Batch    8/   9] Loss:  1.75e-03\n",
      "[Epoch   52/ 100] [Batch    9/   9] Loss:  1.75e-03\n",
      "[Epoch   53/ 100] [Batch    1/   9] Loss:  1.60e-03\n",
      "[Epoch   53/ 100] [Batch    2/   9] Loss:  1.58e-03\n",
      "[Epoch   53/ 100] [Batch    3/   9] Loss:  1.61e-03\n",
      "[Epoch   53/ 100] [Batch    4/   9] Loss:  1.47e-03\n",
      "[Epoch   53/ 100] [Batch    5/   9] Loss:  1.55e-03\n",
      "[Epoch   53/ 100] [Batch    6/   9] Loss:  1.72e-03\n",
      "[Epoch   53/ 100] [Batch    7/   9] Loss:  1.82e-03\n",
      "[Epoch   53/ 100] [Batch    8/   9] Loss:  1.92e-03\n",
      "[Epoch   53/ 100] [Batch    9/   9] Loss:  1.44e-03\n",
      "[Epoch   54/ 100] [Batch    1/   9] Loss:  1.72e-03\n",
      "[Epoch   54/ 100] [Batch    2/   9] Loss:  1.79e-03\n",
      "[Epoch   54/ 100] [Batch    3/   9] Loss:  1.35e-03\n",
      "[Epoch   54/ 100] [Batch    4/   9] Loss:  1.82e-03\n",
      "[Epoch   54/ 100] [Batch    5/   9] Loss:  1.59e-03\n",
      "[Epoch   54/ 100] [Batch    6/   9] Loss:  1.46e-03\n",
      "[Epoch   54/ 100] [Batch    7/   9] Loss:  1.65e-03\n",
      "[Epoch   54/ 100] [Batch    8/   9] Loss:  1.78e-03\n",
      "[Epoch   54/ 100] [Batch    9/   9] Loss:  2.06e-03\n",
      "[Epoch   55/ 100] [Batch    1/   9] Loss:  1.96e-03\n",
      "[Epoch   55/ 100] [Batch    2/   9] Loss:  1.57e-03\n",
      "[Epoch   55/ 100] [Batch    3/   9] Loss:  1.93e-03\n",
      "[Epoch   55/ 100] [Batch    4/   9] Loss:  1.24e-03\n",
      "[Epoch   55/ 100] [Batch    5/   9] Loss:  1.46e-03\n",
      "[Epoch   55/ 100] [Batch    6/   9] Loss:  1.74e-03\n",
      "[Epoch   55/ 100] [Batch    7/   9] Loss:  1.53e-03\n",
      "[Epoch   55/ 100] [Batch    8/   9] Loss:  1.55e-03\n",
      "[Epoch   55/ 100] [Batch    9/   9] Loss:  1.96e-03\n",
      "[Epoch   56/ 100] [Batch    1/   9] Loss:  1.65e-03\n",
      "[Epoch   56/ 100] [Batch    2/   9] Loss:  1.25e-03\n",
      "[Epoch   56/ 100] [Batch    3/   9] Loss:  1.61e-03\n",
      "[Epoch   56/ 100] [Batch    4/   9] Loss:  1.20e-03\n",
      "[Epoch   56/ 100] [Batch    5/   9] Loss:  2.18e-03\n",
      "[Epoch   56/ 100] [Batch    6/   9] Loss:  1.71e-03\n",
      "[Epoch   56/ 100] [Batch    7/   9] Loss:  1.59e-03\n",
      "[Epoch   56/ 100] [Batch    8/   9] Loss:  1.88e-03\n",
      "[Epoch   56/ 100] [Batch    9/   9] Loss:  1.47e-03\n",
      "[Epoch   57/ 100] [Batch    1/   9] Loss:  1.63e-03\n",
      "[Epoch   57/ 100] [Batch    2/   9] Loss:  1.71e-03\n",
      "[Epoch   57/ 100] [Batch    3/   9] Loss:  1.47e-03\n",
      "[Epoch   57/ 100] [Batch    4/   9] Loss:  1.59e-03\n",
      "[Epoch   57/ 100] [Batch    5/   9] Loss:  1.60e-03\n",
      "[Epoch   57/ 100] [Batch    6/   9] Loss:  1.58e-03\n",
      "[Epoch   57/ 100] [Batch    7/   9] Loss:  1.63e-03\n",
      "[Epoch   57/ 100] [Batch    8/   9] Loss:  2.09e-03\n",
      "[Epoch   57/ 100] [Batch    9/   9] Loss:  9.29e-04\n",
      "[Epoch   58/ 100] [Batch    1/   9] Loss:  1.67e-03\n",
      "[Epoch   58/ 100] [Batch    2/   9] Loss:  1.77e-03\n",
      "[Epoch   58/ 100] [Batch    3/   9] Loss:  1.56e-03\n",
      "[Epoch   58/ 100] [Batch    4/   9] Loss:  1.45e-03\n",
      "[Epoch   58/ 100] [Batch    5/   9] Loss:  1.96e-03\n",
      "[Epoch   58/ 100] [Batch    6/   9] Loss:  1.54e-03\n",
      "[Epoch   58/ 100] [Batch    7/   9] Loss:  1.41e-03\n",
      "[Epoch   58/ 100] [Batch    8/   9] Loss:  1.57e-03\n",
      "[Epoch   58/ 100] [Batch    9/   9] Loss:  2.03e-03\n",
      "[Epoch   59/ 100] [Batch    1/   9] Loss:  1.56e-03\n",
      "[Epoch   59/ 100] [Batch    2/   9] Loss:  1.65e-03\n",
      "[Epoch   59/ 100] [Batch    3/   9] Loss:  2.00e-03\n",
      "[Epoch   59/ 100] [Batch    4/   9] Loss:  1.53e-03\n",
      "[Epoch   59/ 100] [Batch    5/   9] Loss:  1.48e-03\n",
      "[Epoch   59/ 100] [Batch    6/   9] Loss:  1.63e-03\n",
      "[Epoch   59/ 100] [Batch    7/   9] Loss:  1.54e-03\n",
      "[Epoch   59/ 100] [Batch    8/   9] Loss:  1.69e-03\n",
      "[Epoch   59/ 100] [Batch    9/   9] Loss:  1.54e-03\n",
      "[Epoch   60/ 100] [Batch    1/   9] Loss:  2.23e-03\n",
      "[Epoch   60/ 100] [Batch    2/   9] Loss:  1.61e-03\n",
      "[Epoch   60/ 100] [Batch    3/   9] Loss:  1.23e-03\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Epoch   60/ 100] [Batch    4/   9] Loss:  1.65e-03\n",
      "[Epoch   60/ 100] [Batch    5/   9] Loss:  2.04e-03\n",
      "[Epoch   60/ 100] [Batch    6/   9] Loss:  1.33e-03\n",
      "[Epoch   60/ 100] [Batch    7/   9] Loss:  1.19e-03\n",
      "[Epoch   60/ 100] [Batch    8/   9] Loss:  1.79e-03\n",
      "[Epoch   60/ 100] [Batch    9/   9] Loss:  1.65e-03\n",
      "[Epoch   61/ 100] [Batch    1/   9] Loss:  1.28e-03\n",
      "[Epoch   61/ 100] [Batch    2/   9] Loss:  1.40e-03\n",
      "[Epoch   61/ 100] [Batch    3/   9] Loss:  1.62e-03\n",
      "[Epoch   61/ 100] [Batch    4/   9] Loss:  1.67e-03\n",
      "[Epoch   61/ 100] [Batch    5/   9] Loss:  1.98e-03\n",
      "[Epoch   61/ 100] [Batch    6/   9] Loss:  1.62e-03\n",
      "[Epoch   61/ 100] [Batch    7/   9] Loss:  1.29e-03\n",
      "[Epoch   61/ 100] [Batch    8/   9] Loss:  2.12e-03\n",
      "[Epoch   61/ 100] [Batch    9/   9] Loss:  2.07e-03\n",
      "[Epoch   62/ 100] [Batch    1/   9] Loss:  1.60e-03\n",
      "[Epoch   62/ 100] [Batch    2/   9] Loss:  1.38e-03\n",
      "[Epoch   62/ 100] [Batch    3/   9] Loss:  1.55e-03\n",
      "[Epoch   62/ 100] [Batch    4/   9] Loss:  1.89e-03\n",
      "[Epoch   62/ 100] [Batch    5/   9] Loss:  1.89e-03\n",
      "[Epoch   62/ 100] [Batch    6/   9] Loss:  1.70e-03\n",
      "[Epoch   62/ 100] [Batch    7/   9] Loss:  1.69e-03\n",
      "[Epoch   62/ 100] [Batch    8/   9] Loss:  1.36e-03\n",
      "[Epoch   62/ 100] [Batch    9/   9] Loss:  1.49e-03\n",
      "[Epoch   63/ 100] [Batch    1/   9] Loss:  1.63e-03\n",
      "[Epoch   63/ 100] [Batch    2/   9] Loss:  1.90e-03\n",
      "[Epoch   63/ 100] [Batch    3/   9] Loss:  2.00e-03\n",
      "[Epoch   63/ 100] [Batch    4/   9] Loss:  1.58e-03\n",
      "[Epoch   63/ 100] [Batch    5/   9] Loss:  1.43e-03\n",
      "[Epoch   63/ 100] [Batch    6/   9] Loss:  1.31e-03\n",
      "[Epoch   63/ 100] [Batch    7/   9] Loss:  1.73e-03\n",
      "[Epoch   63/ 100] [Batch    8/   9] Loss:  1.62e-03\n",
      "[Epoch   63/ 100] [Batch    9/   9] Loss:  1.49e-03\n",
      "[Epoch   64/ 100] [Batch    1/   9] Loss:  1.44e-03\n",
      "[Epoch   64/ 100] [Batch    2/   9] Loss:  1.30e-03\n",
      "[Epoch   64/ 100] [Batch    3/   9] Loss:  1.79e-03\n",
      "[Epoch   64/ 100] [Batch    4/   9] Loss:  1.89e-03\n",
      "[Epoch   64/ 100] [Batch    5/   9] Loss:  1.83e-03\n",
      "[Epoch   64/ 100] [Batch    6/   9] Loss:  1.52e-03\n",
      "[Epoch   64/ 100] [Batch    7/   9] Loss:  1.76e-03\n",
      "[Epoch   64/ 100] [Batch    8/   9] Loss:  1.76e-03\n",
      "[Epoch   64/ 100] [Batch    9/   9] Loss:  1.21e-03\n",
      "[Epoch   65/ 100] [Batch    1/   9] Loss:  1.50e-03\n",
      "[Epoch   65/ 100] [Batch    2/   9] Loss:  1.71e-03\n",
      "[Epoch   65/ 100] [Batch    3/   9] Loss:  1.61e-03\n",
      "[Epoch   65/ 100] [Batch    4/   9] Loss:  1.52e-03\n",
      "[Epoch   65/ 100] [Batch    5/   9] Loss:  1.68e-03\n",
      "[Epoch   65/ 100] [Batch    6/   9] Loss:  1.81e-03\n",
      "[Epoch   65/ 100] [Batch    7/   9] Loss:  1.98e-03\n",
      "[Epoch   65/ 100] [Batch    8/   9] Loss:  1.47e-03\n",
      "[Epoch   65/ 100] [Batch    9/   9] Loss:  1.56e-03\n",
      "[Epoch   66/ 100] [Batch    1/   9] Loss:  1.18e-03\n",
      "[Epoch   66/ 100] [Batch    2/   9] Loss:  1.92e-03\n",
      "[Epoch   66/ 100] [Batch    3/   9] Loss:  1.38e-03\n",
      "[Epoch   66/ 100] [Batch    4/   9] Loss:  2.11e-03\n",
      "[Epoch   66/ 100] [Batch    5/   9] Loss:  1.42e-03\n",
      "[Epoch   66/ 100] [Batch    6/   9] Loss:  1.41e-03\n",
      "[Epoch   66/ 100] [Batch    7/   9] Loss:  1.77e-03\n",
      "[Epoch   66/ 100] [Batch    8/   9] Loss:  1.58e-03\n",
      "[Epoch   66/ 100] [Batch    9/   9] Loss:  2.46e-03\n",
      "[Epoch   67/ 100] [Batch    1/   9] Loss:  1.42e-03\n",
      "[Epoch   67/ 100] [Batch    2/   9] Loss:  2.11e-03\n",
      "[Epoch   67/ 100] [Batch    3/   9] Loss:  1.38e-03\n",
      "[Epoch   67/ 100] [Batch    4/   9] Loss:  1.85e-03\n",
      "[Epoch   67/ 100] [Batch    5/   9] Loss:  1.70e-03\n",
      "[Epoch   67/ 100] [Batch    6/   9] Loss:  1.47e-03\n",
      "[Epoch   67/ 100] [Batch    7/   9] Loss:  1.86e-03\n",
      "[Epoch   67/ 100] [Batch    8/   9] Loss:  1.35e-03\n",
      "[Epoch   67/ 100] [Batch    9/   9] Loss:  1.25e-03\n",
      "[Epoch   68/ 100] [Batch    1/   9] Loss:  1.53e-03\n",
      "[Epoch   68/ 100] [Batch    2/   9] Loss:  1.49e-03\n",
      "[Epoch   68/ 100] [Batch    3/   9] Loss:  1.91e-03\n",
      "[Epoch   68/ 100] [Batch    4/   9] Loss:  1.55e-03\n",
      "[Epoch   68/ 100] [Batch    5/   9] Loss:  1.89e-03\n",
      "[Epoch   68/ 100] [Batch    6/   9] Loss:  1.70e-03\n",
      "[Epoch   68/ 100] [Batch    7/   9] Loss:  1.84e-03\n",
      "[Epoch   68/ 100] [Batch    8/   9] Loss:  1.17e-03\n",
      "[Epoch   68/ 100] [Batch    9/   9] Loss:  1.88e-03\n",
      "[Epoch   69/ 100] [Batch    1/   9] Loss:  1.38e-03\n",
      "[Epoch   69/ 100] [Batch    2/   9] Loss:  1.76e-03\n",
      "[Epoch   69/ 100] [Batch    3/   9] Loss:  1.70e-03\n",
      "[Epoch   69/ 100] [Batch    4/   9] Loss:  1.77e-03\n",
      "[Epoch   69/ 100] [Batch    5/   9] Loss:  1.48e-03\n",
      "[Epoch   69/ 100] [Batch    6/   9] Loss:  1.93e-03\n",
      "[Epoch   69/ 100] [Batch    7/   9] Loss:  1.65e-03\n",
      "[Epoch   69/ 100] [Batch    8/   9] Loss:  1.25e-03\n",
      "[Epoch   69/ 100] [Batch    9/   9] Loss:  1.94e-03\n",
      "[Epoch   70/ 100] [Batch    1/   9] Loss:  1.74e-03\n",
      "[Epoch   70/ 100] [Batch    2/   9] Loss:  1.56e-03\n",
      "[Epoch   70/ 100] [Batch    3/   9] Loss:  1.56e-03\n",
      "[Epoch   70/ 100] [Batch    4/   9] Loss:  1.74e-03\n",
      "[Epoch   70/ 100] [Batch    5/   9] Loss:  1.44e-03\n",
      "[Epoch   70/ 100] [Batch    6/   9] Loss:  1.75e-03\n",
      "[Epoch   70/ 100] [Batch    7/   9] Loss:  1.55e-03\n",
      "[Epoch   70/ 100] [Batch    8/   9] Loss:  1.86e-03\n",
      "[Epoch   70/ 100] [Batch    9/   9] Loss:  1.26e-03\n",
      "[Epoch   71/ 100] [Batch    1/   9] Loss:  1.51e-03\n",
      "[Epoch   71/ 100] [Batch    2/   9] Loss:  1.40e-03\n",
      "[Epoch   71/ 100] [Batch    3/   9] Loss:  1.47e-03\n",
      "[Epoch   71/ 100] [Batch    4/   9] Loss:  1.94e-03\n",
      "[Epoch   71/ 100] [Batch    5/   9] Loss:  1.44e-03\n",
      "[Epoch   71/ 100] [Batch    6/   9] Loss:  1.96e-03\n",
      "[Epoch   71/ 100] [Batch    7/   9] Loss:  2.10e-03\n",
      "[Epoch   71/ 100] [Batch    8/   9] Loss:  1.36e-03\n",
      "[Epoch   71/ 100] [Batch    9/   9] Loss:  1.77e-03\n",
      "[Epoch   72/ 100] [Batch    1/   9] Loss:  1.31e-03\n",
      "[Epoch   72/ 100] [Batch    2/   9] Loss:  1.58e-03\n",
      "[Epoch   72/ 100] [Batch    3/   9] Loss:  1.50e-03\n",
      "[Epoch   72/ 100] [Batch    4/   9] Loss:  1.52e-03\n",
      "[Epoch   72/ 100] [Batch    5/   9] Loss:  2.03e-03\n",
      "[Epoch   72/ 100] [Batch    6/   9] Loss:  1.78e-03\n",
      "[Epoch   72/ 100] [Batch    7/   9] Loss:  2.22e-03\n",
      "[Epoch   72/ 100] [Batch    8/   9] Loss:  1.25e-03\n",
      "[Epoch   72/ 100] [Batch    9/   9] Loss:  1.68e-03\n",
      "[Epoch   73/ 100] [Batch    1/   9] Loss:  1.84e-03\n",
      "[Epoch   73/ 100] [Batch    2/   9] Loss:  1.67e-03\n",
      "[Epoch   73/ 100] [Batch    3/   9] Loss:  2.02e-03\n",
      "[Epoch   73/ 100] [Batch    4/   9] Loss:  1.67e-03\n",
      "[Epoch   73/ 100] [Batch    5/   9] Loss:  1.49e-03\n",
      "[Epoch   73/ 100] [Batch    6/   9] Loss:  1.36e-03\n",
      "[Epoch   73/ 100] [Batch    7/   9] Loss:  1.55e-03\n",
      "[Epoch   73/ 100] [Batch    8/   9] Loss:  1.93e-03\n",
      "[Epoch   73/ 100] [Batch    9/   9] Loss:  1.41e-03\n",
      "[Epoch   74/ 100] [Batch    1/   9] Loss:  1.67e-03\n",
      "[Epoch   74/ 100] [Batch    2/   9] Loss:  1.54e-03\n",
      "[Epoch   74/ 100] [Batch    3/   9] Loss:  1.78e-03\n",
      "[Epoch   74/ 100] [Batch    4/   9] Loss:  1.68e-03\n",
      "[Epoch   74/ 100] [Batch    5/   9] Loss:  1.60e-03\n",
      "[Epoch   74/ 100] [Batch    6/   9] Loss:  1.56e-03\n",
      "[Epoch   74/ 100] [Batch    7/   9] Loss:  1.84e-03\n",
      "[Epoch   74/ 100] [Batch    8/   9] Loss:  1.46e-03\n",
      "[Epoch   74/ 100] [Batch    9/   9] Loss:  1.43e-03\n",
      "[Epoch   75/ 100] [Batch    1/   9] Loss:  1.41e-03\n",
      "[Epoch   75/ 100] [Batch    2/   9] Loss:  1.48e-03\n",
      "[Epoch   75/ 100] [Batch    3/   9] Loss:  1.96e-03\n",
      "[Epoch   75/ 100] [Batch    4/   9] Loss:  1.68e-03\n",
      "[Epoch   75/ 100] [Batch    5/   9] Loss:  1.61e-03\n",
      "[Epoch   75/ 100] [Batch    6/   9] Loss:  1.71e-03\n",
      "[Epoch   75/ 100] [Batch    7/   9] Loss:  1.32e-03\n",
      "[Epoch   75/ 100] [Batch    8/   9] Loss:  2.24e-03\n",
      "[Epoch   75/ 100] [Batch    9/   9] Loss:  1.21e-03\n",
      "[Epoch   76/ 100] [Batch    1/   9] Loss:  1.64e-03\n",
      "[Epoch   76/ 100] [Batch    2/   9] Loss:  2.04e-03\n",
      "[Epoch   76/ 100] [Batch    3/   9] Loss:  1.89e-03\n",
      "[Epoch   76/ 100] [Batch    4/   9] Loss:  1.69e-03\n",
      "[Epoch   76/ 100] [Batch    5/   9] Loss:  1.59e-03\n",
      "[Epoch   76/ 100] [Batch    6/   9] Loss:  1.24e-03\n",
      "[Epoch   76/ 100] [Batch    7/   9] Loss:  1.44e-03\n",
      "[Epoch   76/ 100] [Batch    8/   9] Loss:  1.59e-03\n",
      "[Epoch   76/ 100] [Batch    9/   9] Loss:  1.45e-03\n",
      "[Epoch   77/ 100] [Batch    1/   9] Loss:  1.54e-03\n",
      "[Epoch   77/ 100] [Batch    2/   9] Loss:  1.61e-03\n",
      "[Epoch   77/ 100] [Batch    3/   9] Loss:  1.69e-03\n",
      "[Epoch   77/ 100] [Batch    4/   9] Loss:  1.58e-03\n",
      "[Epoch   77/ 100] [Batch    5/   9] Loss:  1.73e-03\n",
      "[Epoch   77/ 100] [Batch    6/   9] Loss:  1.91e-03\n",
      "[Epoch   77/ 100] [Batch    7/   9] Loss:  1.60e-03\n",
      "[Epoch   77/ 100] [Batch    8/   9] Loss:  1.59e-03\n",
      "[Epoch   77/ 100] [Batch    9/   9] Loss:  1.64e-03\n",
      "[Epoch   78/ 100] [Batch    1/   9] Loss:  1.52e-03\n",
      "[Epoch   78/ 100] [Batch    2/   9] Loss:  1.46e-03\n",
      "[Epoch   78/ 100] [Batch    3/   9] Loss:  1.78e-03\n",
      "[Epoch   78/ 100] [Batch    4/   9] Loss:  1.73e-03\n",
      "[Epoch   78/ 100] [Batch    5/   9] Loss:  1.68e-03\n",
      "[Epoch   78/ 100] [Batch    6/   9] Loss:  1.45e-03\n",
      "[Epoch   78/ 100] [Batch    7/   9] Loss:  1.66e-03\n",
      "[Epoch   78/ 100] [Batch    8/   9] Loss:  2.04e-03\n",
      "[Epoch   78/ 100] [Batch    9/   9] Loss:  1.01e-03\n",
      "[Epoch   79/ 100] [Batch    1/   9] Loss:  1.82e-03\n",
      "[Epoch   79/ 100] [Batch    2/   9] Loss:  1.53e-03\n",
      "[Epoch   79/ 100] [Batch    3/   9] Loss:  1.90e-03\n",
      "[Epoch   79/ 100] [Batch    4/   9] Loss:  1.51e-03\n",
      "[Epoch   79/ 100] [Batch    5/   9] Loss:  1.45e-03\n",
      "[Epoch   79/ 100] [Batch    6/   9] Loss:  1.54e-03\n",
      "[Epoch   79/ 100] [Batch    7/   9] Loss:  1.64e-03\n",
      "[Epoch   79/ 100] [Batch    8/   9] Loss:  1.60e-03\n",
      "[Epoch   79/ 100] [Batch    9/   9] Loss:  2.00e-03\n",
      "[Epoch   80/ 100] [Batch    1/   9] Loss:  1.47e-03\n",
      "[Epoch   80/ 100] [Batch    2/   9] Loss:  1.47e-03\n",
      "[Epoch   80/ 100] [Batch    3/   9] Loss:  1.66e-03\n",
      "[Epoch   80/ 100] [Batch    4/   9] Loss:  1.86e-03\n",
      "[Epoch   80/ 100] [Batch    5/   9] Loss:  1.73e-03\n",
      "[Epoch   80/ 100] [Batch    6/   9] Loss:  1.46e-03\n",
      "[Epoch   80/ 100] [Batch    7/   9] Loss:  1.18e-03\n",
      "[Epoch   80/ 100] [Batch    8/   9] Loss:  2.15e-03\n",
      "[Epoch   80/ 100] [Batch    9/   9] Loss:  1.62e-03\n",
      "[Epoch   81/ 100] [Batch    1/   9] Loss:  1.87e-03\n",
      "[Epoch   81/ 100] [Batch    2/   9] Loss:  1.73e-03\n",
      "[Epoch   81/ 100] [Batch    3/   9] Loss:  1.71e-03\n",
      "[Epoch   81/ 100] [Batch    4/   9] Loss:  1.77e-03\n",
      "[Epoch   81/ 100] [Batch    5/   9] Loss:  1.67e-03\n",
      "[Epoch   81/ 100] [Batch    6/   9] Loss:  1.41e-03\n",
      "[Epoch   81/ 100] [Batch    7/   9] Loss:  1.57e-03\n",
      "[Epoch   81/ 100] [Batch    8/   9] Loss:  1.32e-03\n",
      "[Epoch   81/ 100] [Batch    9/   9] Loss:  1.50e-03\n",
      "[Epoch   82/ 100] [Batch    1/   9] Loss:  1.84e-03\n",
      "[Epoch   82/ 100] [Batch    2/   9] Loss:  1.62e-03\n",
      "[Epoch   82/ 100] [Batch    3/   9] Loss:  1.53e-03\n",
      "[Epoch   82/ 100] [Batch    4/   9] Loss:  1.76e-03\n",
      "[Epoch   82/ 100] [Batch    5/   9] Loss:  1.29e-03\n",
      "[Epoch   82/ 100] [Batch    6/   9] Loss:  1.38e-03\n",
      "[Epoch   82/ 100] [Batch    7/   9] Loss:  1.70e-03\n",
      "[Epoch   82/ 100] [Batch    8/   9] Loss:  1.73e-03\n",
      "[Epoch   82/ 100] [Batch    9/   9] Loss:  1.97e-03\n",
      "[Epoch   83/ 100] [Batch    1/   9] Loss:  1.56e-03\n",
      "[Epoch   83/ 100] [Batch    2/   9] Loss:  1.73e-03\n",
      "[Epoch   83/ 100] [Batch    3/   9] Loss:  1.68e-03\n",
      "[Epoch   83/ 100] [Batch    4/   9] Loss:  1.28e-03\n",
      "[Epoch   83/ 100] [Batch    5/   9] Loss:  1.41e-03\n",
      "[Epoch   83/ 100] [Batch    6/   9] Loss:  1.97e-03\n",
      "[Epoch   83/ 100] [Batch    7/   9] Loss:  1.98e-03\n",
      "[Epoch   83/ 100] [Batch    8/   9] Loss:  1.75e-03\n",
      "[Epoch   83/ 100] [Batch    9/   9] Loss:  1.63e-03\n",
      "[Epoch   84/ 100] [Batch    1/   9] Loss:  1.91e-03\n",
      "[Epoch   84/ 100] [Batch    2/   9] Loss:  2.02e-03\n",
      "[Epoch   84/ 100] [Batch    3/   9] Loss:  1.64e-03\n",
      "[Epoch   84/ 100] [Batch    4/   9] Loss:  1.35e-03\n",
      "[Epoch   84/ 100] [Batch    5/   9] Loss:  1.55e-03\n",
      "[Epoch   84/ 100] [Batch    6/   9] Loss:  1.47e-03\n",
      "[Epoch   84/ 100] [Batch    7/   9] Loss:  1.59e-03\n",
      "[Epoch   84/ 100] [Batch    8/   9] Loss:  1.75e-03\n",
      "[Epoch   84/ 100] [Batch    9/   9] Loss:  1.62e-03\n",
      "[Epoch   85/ 100] [Batch    1/   9] Loss:  1.62e-03\n",
      "[Epoch   85/ 100] [Batch    2/   9] Loss:  1.96e-03\n",
      "[Epoch   85/ 100] [Batch    3/   9] Loss:  1.71e-03\n",
      "[Epoch   85/ 100] [Batch    4/   9] Loss:  1.65e-03\n",
      "[Epoch   85/ 100] [Batch    5/   9] Loss:  1.94e-03\n",
      "[Epoch   85/ 100] [Batch    6/   9] Loss:  1.67e-03\n",
      "[Epoch   85/ 100] [Batch    7/   9] Loss:  1.58e-03\n",
      "[Epoch   85/ 100] [Batch    8/   9] Loss:  1.13e-03\n",
      "[Epoch   85/ 100] [Batch    9/   9] Loss:  1.59e-03\n",
      "[Epoch   86/ 100] [Batch    1/   9] Loss:  2.17e-03\n",
      "[Epoch   86/ 100] [Batch    2/   9] Loss:  1.80e-03\n",
      "[Epoch   86/ 100] [Batch    3/   9] Loss:  1.44e-03\n",
      "[Epoch   86/ 100] [Batch    4/   9] Loss:  1.08e-03\n",
      "[Epoch   86/ 100] [Batch    5/   9] Loss:  1.74e-03\n",
      "[Epoch   86/ 100] [Batch    6/   9] Loss:  1.69e-03\n",
      "[Epoch   86/ 100] [Batch    7/   9] Loss:  1.71e-03\n",
      "[Epoch   86/ 100] [Batch    8/   9] Loss:  1.45e-03\n",
      "[Epoch   86/ 100] [Batch    9/   9] Loss:  1.68e-03\n",
      "[Epoch   87/ 100] [Batch    1/   9] Loss:  1.67e-03\n",
      "[Epoch   87/ 100] [Batch    2/   9] Loss:  1.63e-03\n",
      "[Epoch   87/ 100] [Batch    3/   9] Loss:  1.40e-03\n",
      "[Epoch   87/ 100] [Batch    4/   9] Loss:  1.64e-03\n",
      "[Epoch   87/ 100] [Batch    5/   9] Loss:  1.50e-03\n",
      "[Epoch   87/ 100] [Batch    6/   9] Loss:  1.86e-03\n",
      "[Epoch   87/ 100] [Batch    7/   9] Loss:  1.46e-03\n",
      "[Epoch   87/ 100] [Batch    8/   9] Loss:  1.85e-03\n",
      "[Epoch   87/ 100] [Batch    9/   9] Loss:  1.66e-03\n",
      "[Epoch   88/ 100] [Batch    1/   9] Loss:  1.38e-03\n",
      "[Epoch   88/ 100] [Batch    2/   9] Loss:  1.23e-03\n",
      "[Epoch   88/ 100] [Batch    3/   9] Loss:  1.92e-03\n",
      "[Epoch   88/ 100] [Batch    4/   9] Loss:  1.57e-03\n",
      "[Epoch   88/ 100] [Batch    5/   9] Loss:  1.68e-03\n",
      "[Epoch   88/ 100] [Batch    6/   9] Loss:  1.89e-03\n",
      "[Epoch   88/ 100] [Batch    7/   9] Loss:  1.41e-03\n",
      "[Epoch   88/ 100] [Batch    8/   9] Loss:  2.05e-03\n",
      "[Epoch   88/ 100] [Batch    9/   9] Loss:  1.36e-03\n",
      "[Epoch   89/ 100] [Batch    1/   9] Loss:  1.49e-03\n",
      "[Epoch   89/ 100] [Batch    2/   9] Loss:  1.73e-03\n",
      "[Epoch   89/ 100] [Batch    3/   9] Loss:  1.62e-03\n",
      "[Epoch   89/ 100] [Batch    4/   9] Loss:  1.63e-03\n",
      "[Epoch   89/ 100] [Batch    5/   9] Loss:  1.56e-03\n",
      "[Epoch   89/ 100] [Batch    6/   9] Loss:  1.31e-03\n",
      "[Epoch   89/ 100] [Batch    7/   9] Loss:  1.81e-03\n",
      "[Epoch   89/ 100] [Batch    8/   9] Loss:  1.99e-03\n",
      "[Epoch   89/ 100] [Batch    9/   9] Loss:  1.49e-03\n",
      "[Epoch   90/ 100] [Batch    1/   9] Loss:  1.37e-03\n",
      "[Epoch   90/ 100] [Batch    2/   9] Loss:  1.98e-03\n",
      "[Epoch   90/ 100] [Batch    3/   9] Loss:  1.47e-03\n",
      "[Epoch   90/ 100] [Batch    4/   9] Loss:  1.76e-03\n",
      "[Epoch   90/ 100] [Batch    5/   9] Loss:  1.84e-03\n",
      "[Epoch   90/ 100] [Batch    6/   9] Loss:  1.53e-03\n",
      "[Epoch   90/ 100] [Batch    7/   9] Loss:  1.75e-03\n",
      "[Epoch   90/ 100] [Batch    8/   9] Loss:  1.43e-03\n",
      "[Epoch   90/ 100] [Batch    9/   9] Loss:  1.81e-03\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Epoch   91/ 100] [Batch    1/   9] Loss:  1.51e-03\n",
      "[Epoch   91/ 100] [Batch    2/   9] Loss:  1.94e-03\n",
      "[Epoch   91/ 100] [Batch    3/   9] Loss:  1.51e-03\n",
      "[Epoch   91/ 100] [Batch    4/   9] Loss:  1.72e-03\n",
      "[Epoch   91/ 100] [Batch    5/   9] Loss:  1.38e-03\n",
      "[Epoch   91/ 100] [Batch    6/   9] Loss:  1.88e-03\n",
      "[Epoch   91/ 100] [Batch    7/   9] Loss:  1.68e-03\n",
      "[Epoch   91/ 100] [Batch    8/   9] Loss:  1.52e-03\n",
      "[Epoch   91/ 100] [Batch    9/   9] Loss:  1.51e-03\n",
      "[Epoch   92/ 100] [Batch    1/   9] Loss:  1.58e-03\n",
      "[Epoch   92/ 100] [Batch    2/   9] Loss:  1.54e-03\n",
      "[Epoch   92/ 100] [Batch    3/   9] Loss:  1.85e-03\n",
      "[Epoch   92/ 100] [Batch    4/   9] Loss:  1.70e-03\n",
      "[Epoch   92/ 100] [Batch    5/   9] Loss:  1.52e-03\n",
      "[Epoch   92/ 100] [Batch    6/   9] Loss:  1.25e-03\n",
      "[Epoch   92/ 100] [Batch    7/   9] Loss:  2.05e-03\n",
      "[Epoch   92/ 100] [Batch    8/   9] Loss:  1.76e-03\n",
      "[Epoch   92/ 100] [Batch    9/   9] Loss:  1.56e-03\n",
      "[Epoch   93/ 100] [Batch    1/   9] Loss:  1.59e-03\n",
      "[Epoch   93/ 100] [Batch    2/   9] Loss:  1.92e-03\n",
      "[Epoch   93/ 100] [Batch    3/   9] Loss:  1.42e-03\n",
      "[Epoch   93/ 100] [Batch    4/   9] Loss:  1.67e-03\n",
      "[Epoch   93/ 100] [Batch    5/   9] Loss:  1.43e-03\n",
      "[Epoch   93/ 100] [Batch    6/   9] Loss:  2.10e-03\n",
      "[Epoch   93/ 100] [Batch    7/   9] Loss:  1.44e-03\n",
      "[Epoch   93/ 100] [Batch    8/   9] Loss:  1.88e-03\n",
      "[Epoch   93/ 100] [Batch    9/   9] Loss:  2.01e-03\n",
      "[Epoch   94/ 100] [Batch    1/   9] Loss:  1.49e-03\n",
      "[Epoch   94/ 100] [Batch    2/   9] Loss:  1.82e-03\n",
      "[Epoch   94/ 100] [Batch    3/   9] Loss:  1.57e-03\n",
      "[Epoch   94/ 100] [Batch    4/   9] Loss:  1.80e-03\n",
      "[Epoch   94/ 100] [Batch    5/   9] Loss:  1.41e-03\n",
      "[Epoch   94/ 100] [Batch    6/   9] Loss:  2.01e-03\n",
      "[Epoch   94/ 100] [Batch    7/   9] Loss:  1.42e-03\n",
      "[Epoch   94/ 100] [Batch    8/   9] Loss:  1.91e-03\n",
      "[Epoch   94/ 100] [Batch    9/   9] Loss:  2.12e-03\n",
      "[Epoch   95/ 100] [Batch    1/   9] Loss:  1.36e-03\n",
      "[Epoch   95/ 100] [Batch    2/   9] Loss:  1.46e-03\n",
      "[Epoch   95/ 100] [Batch    3/   9] Loss:  1.85e-03\n",
      "[Epoch   95/ 100] [Batch    4/   9] Loss:  1.98e-03\n",
      "[Epoch   95/ 100] [Batch    5/   9] Loss:  1.93e-03\n",
      "[Epoch   95/ 100] [Batch    6/   9] Loss:  1.95e-03\n",
      "[Epoch   95/ 100] [Batch    7/   9] Loss:  1.36e-03\n",
      "[Epoch   95/ 100] [Batch    8/   9] Loss:  1.49e-03\n",
      "[Epoch   95/ 100] [Batch    9/   9] Loss:  1.48e-03\n",
      "[Epoch   96/ 100] [Batch    1/   9] Loss:  1.38e-03\n",
      "[Epoch   96/ 100] [Batch    2/   9] Loss:  1.54e-03\n",
      "[Epoch   96/ 100] [Batch    3/   9] Loss:  1.90e-03\n",
      "[Epoch   96/ 100] [Batch    4/   9] Loss:  2.11e-03\n",
      "[Epoch   96/ 100] [Batch    5/   9] Loss:  1.46e-03\n",
      "[Epoch   96/ 100] [Batch    6/   9] Loss:  1.78e-03\n",
      "[Epoch   96/ 100] [Batch    7/   9] Loss:  1.58e-03\n",
      "[Epoch   96/ 100] [Batch    8/   9] Loss:  1.51e-03\n",
      "[Epoch   96/ 100] [Batch    9/   9] Loss:  1.58e-03\n",
      "[Epoch   97/ 100] [Batch    1/   9] Loss:  1.91e-03\n",
      "[Epoch   97/ 100] [Batch    2/   9] Loss:  2.03e-03\n",
      "[Epoch   97/ 100] [Batch    3/   9] Loss:  1.69e-03\n",
      "[Epoch   97/ 100] [Batch    4/   9] Loss:  1.26e-03\n",
      "[Epoch   97/ 100] [Batch    5/   9] Loss:  1.54e-03\n",
      "[Epoch   97/ 100] [Batch    6/   9] Loss:  1.64e-03\n",
      "[Epoch   97/ 100] [Batch    7/   9] Loss:  1.69e-03\n",
      "[Epoch   97/ 100] [Batch    8/   9] Loss:  1.63e-03\n",
      "[Epoch   97/ 100] [Batch    9/   9] Loss:  1.69e-03\n",
      "[Epoch   98/ 100] [Batch    1/   9] Loss:  1.65e-03\n",
      "[Epoch   98/ 100] [Batch    2/   9] Loss:  1.80e-03\n",
      "[Epoch   98/ 100] [Batch    3/   9] Loss:  1.19e-03\n",
      "[Epoch   98/ 100] [Batch    4/   9] Loss:  1.77e-03\n",
      "[Epoch   98/ 100] [Batch    5/   9] Loss:  1.55e-03\n",
      "[Epoch   98/ 100] [Batch    6/   9] Loss:  2.04e-03\n",
      "[Epoch   98/ 100] [Batch    7/   9] Loss:  1.54e-03\n",
      "[Epoch   98/ 100] [Batch    8/   9] Loss:  1.79e-03\n",
      "[Epoch   98/ 100] [Batch    9/   9] Loss:  1.31e-03\n",
      "[Epoch   99/ 100] [Batch    1/   9] Loss:  1.76e-03\n",
      "[Epoch   99/ 100] [Batch    2/   9] Loss:  1.64e-03\n",
      "[Epoch   99/ 100] [Batch    3/   9] Loss:  1.82e-03\n",
      "[Epoch   99/ 100] [Batch    4/   9] Loss:  1.36e-03\n",
      "[Epoch   99/ 100] [Batch    5/   9] Loss:  1.77e-03\n",
      "[Epoch   99/ 100] [Batch    6/   9] Loss:  1.65e-03\n",
      "[Epoch   99/ 100] [Batch    7/   9] Loss:  1.86e-03\n",
      "[Epoch   99/ 100] [Batch    8/   9] Loss:  1.47e-03\n",
      "[Epoch   99/ 100] [Batch    9/   9] Loss:  1.69e-03\n",
      "[Epoch  100/ 100] [Batch    1/   9] Loss:  1.45e-03\n",
      "[Epoch  100/ 100] [Batch    2/   9] Loss:  1.73e-03\n",
      "[Epoch  100/ 100] [Batch    3/   9] Loss:  1.66e-03\n",
      "[Epoch  100/ 100] [Batch    4/   9] Loss:  1.99e-03\n",
      "[Epoch  100/ 100] [Batch    5/   9] Loss:  1.69e-03\n",
      "[Epoch  100/ 100] [Batch    6/   9] Loss:  1.49e-03\n",
      "[Epoch  100/ 100] [Batch    7/   9] Loss:  1.75e-03\n",
      "[Epoch  100/ 100] [Batch    8/   9] Loss:  1.59e-03\n",
      "[Epoch  100/ 100] [Batch    9/   9] Loss:  1.18e-03\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "LinearModel(\n",
       "  (linear): Linear(in_features=1, out_features=1, bias=True)\n",
       ")"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_hist = {}\n",
    "train_hist['loss'] = []\n",
    "\n",
    "if input_dim == output_dim == 1:\n",
    "    train_hist['weight'] = []\n",
    "    train_hist['bias'] = []\n",
    "\n",
    "# Initialize training\n",
    "model.reset()\n",
    "model.train()\n",
    "\n",
    "for epoch in range(n_epochs):\n",
    "    for idx, batch in enumerate(train_loader):\n",
    "        optimizer.zero_grad()\n",
    "        loss = loss_fun(model.forward(batch[0]),  batch[1])\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "\n",
    "        train_hist['loss'].append(loss.item())\n",
    "        if input_dim == output_dim == 1:\n",
    "            train_hist['weight'].append(model.linear.weight.item())\n",
    "            train_hist['bias'].append(model.linear.bias.item())\n",
    "        \n",
    "        print('[Epoch %4d/%4d] [Batch %4d/%4d] Loss: % 2.2e' % (epoch + 1, n_epochs, \n",
    "                                                                idx + 1, len(train_loader), \n",
    "                                                                loss.item()))\n",
    "        \n",
    "model.eval()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "    n_test = 500\n",
    "    X_test = np.random.rand(n_test, input_dim)\n",
    "    y_pred = []\n",
    "\n",
    "    state_dict = model.state_dict()\n",
    "\n",
    "    for idx in range(len(train_hist['weight'])):\n",
    "        state_dict['linear.weight'] = torch.tensor([[train_hist['weight'][idx]]])\n",
    "        state_dict['linear.bias'] = torch.tensor([train_hist['bias'][idx]])\n",
    "        model.load_state_dict(state_dict)\n",
    "\n",
    "        y_pred.append(model.forward(torch.tensor(X_test.astype('f'))).detach().numpy())    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "    fig = plt.figure(figsize=(15, 5))\n",
    "    fig.clf()\n",
    "    \n",
    "    ax = fig.add_subplot(1, 3, 1)\n",
    "    levels = np.logspace(np.log(np.min(loss_values)), np.log(np.max(loss_values)), 20)\n",
    "    ax.contourf(ww, bb, loss_values, levels=levels, norm=colors.LogNorm())\n",
    "    ax.plot(train_hist['weight'], train_hist['bias'], '.-b')\n",
    "    ax.plot(A[0], b, 'r*', markersize=10)\n",
    "    ax.set_xlabel('weight')\n",
    "    ax.set_ylabel('bias')\n",
    "    ax.legend(['optim', '(A, b)'])\n",
    "    ax.grid(True)\n",
    "    ax.set_xlim(-2, 2) \n",
    "    ax.set_ylim(-2, 2) \n",
    "    \n",
    "    ax = fig.add_subplot(1, 3, 2)\n",
    "    ax.loglog(np.abs(train_hist['loss']))\n",
    "    ax.set_xlabel('Iter')\n",
    "    ax.set_ylabel('Loss')\n",
    "    ax.grid(True)\n",
    "    \n",
    "    ax = fig.add_subplot(1, 3, 3)\n",
    "    ax.plot(X_train, y_train, '.')\n",
    "    a=ax.plot(X_test, y_pred[0], '-', alpha=0.1)\n",
    "    for y in y_pred[1:]:\n",
    "        ax.plot(X_test, y, '-', alpha=0.1, color=a[0].get_color())\n",
    "    ax.plot(X_test, y_pred[-1], 'k')\n",
    "    ax.grid(True)   \n",
    "\n",
    "    fig.tight_layout()\n",
    "\n",
    "else:\n",
    "    fig = plt.figure()\n",
    "    fig.clf()\n",
    "    ax = fig.gca()\n",
    "    ax.loglog(np.abs(train_hist['loss']))\n",
    "    ax.set_xlabel('Iter')\n",
    "    ax.set_ylabel('Loss')\n",
    "    ax.grid(True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
